Volledige versie bekijken : Externe as file
DaOxx
%Europe/Berlin %517 %2009, 12:24
Hallo,
Kan ik vanuit het hoofdbestand een functie binnen een class van een externe .as bestand aanroepen? Ik heb een aantal dingen geprobeerd maar lukt niet..
Dauntless
%Europe/Berlin %519 %2009, 12:27
Als het echt een classe is, moet je er eerst een instantie van aanmaken:
var myClass:Class = new Class(); //met Class = naam van de classe
Daarna kan je er methods op uitvoeren, bv
myClass.someMethod();
DaOxx
%Europe/Berlin %520 %2009, 12:29
Uhm. Van deze reactie begrijp ik niet bijzonder veel. Voorbeeldje hoe ik dit aan zou moeten roepen zou ik prijs stellen.
Nu staat er wel voorbeeld :)
Dauntless
%Europe/Berlin %521 %2009, 12:30
Misschien had je m'n post gelezen voor ik 'm aangepast had? (Per ongeluk op tab+enter geduwd)
Als je het niet snapt met het voorbeeldje van hierboven, moet je even het .as bestand online gooien.
DaOxx
%Europe/Berlin %532 %2009, 12:47
Ja idd, ik had eerder gerefreshed waardoor ik maar een deel van je bericht zag.
Het lukt me nog niet echt, de functie die ik wil benaderen geeft hij gewoonw eer als tekst. Hieronder de code van de .as bestand
import com.mixmedia.mx.MovieClipEvt;
import com.mixmedia.mx.Event;
import mx.utils.Delegate;
import com.mixmedia.motion.MotionTween;
import mx.transitions.easing.Bounce;
import mx.transitions.easing.Elastic;
class DragContent {
public var speed:Number;
public var friction:Number;
public var MustSnap: Boolean=false;
private var mc:MovieClipEvt;
private var motion:MotionTween;
private var canInteract : Boolean=true;
private var slider: Boolean=false;
public function DragContent(mc:MovieClipEvt){
this.mc = mc;
motion = new MotionTween(mc.mc,{dur:20});
mc.enableOnEnterFrameEvent(true);
mc.addEventListener(Event.ENTERFRAME,Delegate.crea te(this,loop));
speed=0;
friction=1;
}
public function scrollByValue(value:Number){
_root.ShowInterface = false;
var breedte1jaar1:Number = _root.scrollContent.mcContent.mc_timeline.breedte1 jaar; //Ophalen van de breedte van 1 jaartal uit timeline
var aantal:Number = mc.mc._x / breedte1jaar1; //Uitrekenenen hoevaak 1 jaartal in huidige positie gaat
var rounded = Math.round(aantal); // afronden op heel getal
var xnaartoe1:Number = rounded * breedte1jaar1; //uitrekenen welke positie dit dan komt
if(canInteract){
mc.mc._x += value;
}
}
// Deze function maakt een motion tween naar de opgegeven waarde
public function SnapTo(value:Number,year:Number){
canInteract = false;
MustSnap = false;
motion.startTween({x:value,tweenMethod:snap});
motion.addEventListener(Event.TWEENEND,Delegate.cr eate(this,onMotionDone))
_root.CurrentYear = 1913 + Math.abs(year);
//_root.ShowInterface = true;
}
// Snappen als de speed 0 is, en er nog niet gesnapt is
public function IfSpeedNull(value:Number){
if (canInteract && value == 0 && MustSnap == true){
var breedte1jaar1:Number = _root.scrollContent.mcContent.mc_timeline.breedte1 jaar; //Ophalen van de breedte van 1 jaartal uit timeline
var aantal:Number = mc.mc._x / breedte1jaar1; //Uitrekenenen hoevaak 1 jaartal in huidige positie gaat
var rounded = Math.round(aantal); // afronden op heel getal
var xnaartoe:Number = rounded * breedte1jaar1; //uitrekenen welke positie dit dan komt
SnapTo(xnaartoe, rounded);
MustSnap = false;
}
}
private function loop(){
IfSpeedNull(speed);
if(canInteract){
if(mc.mc._x>0){
//bounce;
canInteract = false;
motion.startTween({x:0,tweenMethod:endBounce});
motion.addEventListener(Event.TWEENEND,Delegate.cr eate(this,onMotionDone));
_root.ShowInterface = false;
}
if(mc.mc._x<-Math.ceil(mc.mc._width)+200){
canInteract = false;
motion.startTween({x:-Math.ceil(mc.mc._width)+200,tweenMethod:endBounce} );
motion.addEventListener(Event.TWEENEND,Delegate.cr eate(this,onMotionDone));
_root.ShowInterface = false;
}
speed = speed*(1-friction);
var breedte1jaar1:Number = _root.scrollContent.mcContent.mc_timeline.breedte1 jaar; //Ophalen van de breedte van 1 jaartal uit timeline
var aantal:Number = mc.mc._x / breedte1jaar1; //Uitrekenenen hoevaak 1 jaartal in huidige positie gaat
var rounded = Math.round(aantal); // afronden op heel getal
var xnaartoe:Number = rounded * breedte1jaar1; //uitrekenen welke positie dit dan komt
if(Math.abs(speed)>0 && Math.abs(speed)<0.5){
SnapTo(xnaartoe, rounded);
}
if(Math.abs(speed)<0.01) {speed = 0;}
mc.mc._x += speed;
}
}
private function onMotionDone(evt) : Void {
speed=0;
slider = false
canInteract = true;
_root.ShowInterface = true;
}
private function endBounce(t:Number, b:Number, c:Number, d:Number){
return Elastic.easeOut (t, b, c, d, -100, 100);
}
private function snap(t:Number, b:Number, c:Number, d:Number){
return Elastic.easeInOut (t, b, c, d, -100, 100);
}
}
Dauntless
%Europe/Berlin %542 %2009, 13:01
var myDragContent:DragContent = new DragContent(myMovieClip);
myDragContent.scrollByValue(5); //bv
Wat probeer jij nu ?
DaOxx
%Europe/Berlin %560 %2009, 13:26
Ook dat ongeveer. Met dat hierboven krijg ik in output: motiontween require movieclip. Maar datzal door defunctiekomen. Ik denk dat ik er nu wel uit ga komen.
Alvast bedankt enmocht het niet zo zijn postik mijn vraag wel weer hier.
Thanks!
DaOxx
%Europe/Berlin %809 %2009, 19:25
Het lukt met toch niet. Hij zegt: There is no method with the name SnapToYear. Terwijl die functie er wel in staat (niet in de versie die ik hierboven heb gepost).
Ik moest trouwens ook niet deze class hebben maar Main was in main.as wordt DragContents.as geinclude.
on(press)
{
var myDragContent:Main = new Main();
//myDragContent.DragToYear(Year);
myDragContent.SnapToYear(2006);
}
Waar zou het dan aan kunnen liggen?
*edit* het is toch DragContent ipv Main, het ligt aan mijn functie. Dus wat je zei klopt wel.
DaOxx
%Europe/Berlin %848 %2009, 20:21
Toch maar weer wel. In het voenstaande stuk code zie je DragContent.as
Echter moet ik het deel van Drag.as ook hebben. Normaal roep ik dit aan:
m = new Main(this);
Dan roept hij het volgende stukje code aan:
import com.mixmedia.mx.MovieClipEvt;
import com.mixmedia.mx.Event;
import mx.utils.Delegate;
import com.gamemeal.physics.Point3;
/**
* @author Colin
*/
class Main {
private var mc:MovieClip;
public function Main(mc:MovieClip){
this.mc = mc;
new Drag(mc.scrollContent,new DragContent(new MovieClipEvt(mc.scrollContent.mcContent)));
}
}
Hier heb ik wat van nodig maar ook in dat andere .as bestand. is dit eigenlijk wel mogelijk?
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.