Loader, load!
der kan loades eksterne swf, jpg, gif, png mm.
Grundkode
var loader:Loader = new Loader(); var request:URLRequest = new URLRequest ("en.swf"); loader.load(request); addChild(loader);
Supplerende funktionalitet:
load en ny fil ind og erstat den forrige loadede fil
loader.load(new URLRequest ("enAnden.swf")); addChild(loader);
load indholdet ind i en movieclip
box_mc.addChild(loader);
unload loaderen
loader.unload();
Med PROGRESS preloader og COMPLETE:
Setup: pct_txt (dynamisk tekstfelt), frames100_mc (animeret movieClip på 100 frames).
// Husk at trykke CTRL+ENTER 2 gange for at teste preloader. ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, pHANDLER); function pHANDLER(e:ProgressEvent):void { var pctLoaded:int = Math.round(e.bytesLoaded/e.bytesTotal * 100); pct_txt.text=pctLoaded.toString()+" %"; frames100_mc.gotoAndStop(pctLoaded); } ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, cHANDLER); function cHANDLER(e:Event):void { e.target.content.scaleX = e.target.content.scaleY =.2; }
Created: 8 April 2008 • by admin
Categories: overblik • preloader • snippet
Comments: be the first to comment
Drag’n drop
Setup
2 movieclips, drag_mc og target_mc, placeret på scenen et stykke fra hinanden.
Grundkode:
drag_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragHANDLER); function dragHANDLER(e:MouseEvent):void { drag_mc.startDrag(); } drag_mc.addEventListener(MouseEvent.MOUSE_UP, dropHANDLER); function dropHANDLER(e:MouseEvent):void { drag_mc.stopDrag(); }
Med HitTestPoint():
var sourceX:int=drag_mc.x; var sourceY:int=drag_mc.y; drag_mc.buttonMode=true; drag_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragHANDLER); function dragHANDLER(e:MouseEvent):void { drag_mc.startDrag(); ////////////////////////////////// e.target.parent.addChild(e.target);//lægger øverst /////////////////////////////////// } drag_mc.addEventListener(MouseEvent.MOUSE_UP,dropHANDLER); function dropHANDLER(e:MouseEvent):void { drag_mc.stopDrag(); if (drag_mc.hitTestPoint(target_mc.x, target_mc.y, true)) { drag_mc.x=target_mc.x; drag_mc.y=target_mc.y; } else { drag_mc.x=sourceX; drag_mc.y=sourceY; } }
Created: 7 April 2008 • by admin
Categories: as3 • snippet
Comments: 1 comment, add one
Keyboard – kort men hakkende
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); function keyPressed(e:KeyboardEvent) { if (e.keyCode == Keyboard.RIGHT) { mc.x +=5; } if (e.keyCode == Keyboard.LEFT) { mc.x -=5; } if (e.keyCode == Keyboard.UP) { mc.y -=5; } if (e.keyCode == Keyboard.DOWN) { mc.y +=5; } }
Se også: Keyboard – lang men flydende
Created: 7 April 2008 • by admin
Categories: events • snippet
Comments: be the first to comment
Keyboard – lang men flydende
Alle de keys man har brug for i form af booleans
var rightArrow:Boolean=false; var leftArrow:Boolean=false; var upArrow:Boolean=false; var downArrow:Boolean=false;
KEY_DOWN listeneren sætter dem til true
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); function keyPressed(e:KeyboardEvent) { if (e.keyCode == Keyboard.RIGHT) { rightArrow = true; } if (e.keyCode == Keyboard.LEFT) { leftArrow = true; } if (e.keyCode == Keyboard.UP) { upArrow = true; } if (e.keyCode == Keyboard.DOWN) { downArrow = true; } }
KEY_UP listeneren sætter dem til false
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased); function keyReleased(e:KeyboardEvent) { if (e.keyCode == Keyboard.RIGHT) { rightArrow = false; } if (e.keyCode == Keyboard.LEFT) { leftArrow = false; } if (e.keyCode == Keyboard.UP) { upArrow = false; } if (e.keyCode == Keyboard.DOWN) { downArrow = false; } }
ENTER_FRAME listeneren reagerer på dem prompte
stage.addEventListener(Event.ENTER_FRAME, MOVE); function MOVE(e:Event) { if (rightArrow) { mc.x += 5; mc.play(); } if (leftArrow) { mc.x -= 5; mc.play(); } if (upArrow) { mc.y -= 5; mc.play(); } if (downArrow) { mc.y += 5; mc.play(); } if (!rightArrow && !leftArrow && !upArrow && !downArrow) { mc.stop(); } }
Se også: Keyboard – kort men hakkende
Created: 7 April 2008 • by admin
Categories: events • snippet
Comments: be the first to comment
mcStatus mekanik
mc er movieclippet med den sektionerede timeline og relevante labels. Dens labels har her samme navne som de mcStatus værdier den skal reagere på! De behøver ikke at være de samme, men det er smart.
mcStatus er en variabel, der får værdi af tilstande, som indgår i en logisk rækkefølge. Hvert trin betinger det næste (erstat navne med dem du arbejder med).
Start med at få overblik over de forskellige mcStatus værdier
/*mcStatus værdier: sleep, awake, dressup */
Og definer så en startværdi for mcStatus
var mcStatus:String = "sleep";
Kombinationer
Andre objekter ændrer mcStatus:
alarm_mc.buttonMode = true;
alarm_mc.addEventListener(MouseEvent.CLICK, alarm_HANDLER);
function alarm_HANDLER (e:MouseEvent):void {
if (mcStatus == "sleep") {
mcStatus = "awake";
}
}
dress_mc.buttonMode = true;
dress_mc.addEventListener(MouseEvent.CLICK, dress_HANDLER);
function dress_HANDLER (e:MouseEvent):void {
if (mcStatus == "awake") {
mcStatus = "dressup";
}
}
mc aktiveres ved direkte klik (hvis den ikke har været der):
mc.buttonMode = true;
mc.addEventListener(MouseEvent.CLICK, mc_HANDLER);
function mc_HANDLER (e:MouseEvent):void {
if (mc.currentLabel!= mcStatus){
mc.gotoAndPlay(mcStatus);
}
Andre objekter ændrer mcStatus og aktiverer mc:
dress_mc.buttonMode = true;
dress_mc.addEventListener(MouseEvent.CLICK, dress_HANDLER);
function dress_HANDLER (e:MouseEvent):void {
if (mcStatus == "awake") {
mcStatus = "dressup";
mc.gotoAndPlay (mcStatus);
}
}
Created: 6 April 2008 • by admin
Categories: as3 • eksempel • snippet
Comments: be the first to comment
Points – score
Hermed beskrivelsen og en anvendelsesprocedure for implementering i eksisterende scripts.
Princippet i trin
- at definere variabler til points, maximum-værdi, minimum-værdi og start-værdi
- at ændre værdierne på passende tidspunkt
- at vise værdierne for bruger
- at chekke om værdierne har nået den afgørende værdi
- at udføre konsekvenserne deraf
Det er meget muligt, at du har brug for kun at tælle opad – eller nedad, men her går eksempel i begge retninger, som du kan tilpasse. Eksemplet kan udbygges til også at tælle liv.
Foreslået fremgangs-rækkefølge
Nogle ’sigende’ variabler
(hører til i øverste del af et script, for nemt at kunne ’skrues’ på) :
var winScore:Number = 10; var loseScore:Number = -10; var points:Number=0;
Et dynamisk tekstfelt til display
(På et score-lag i spil.scenariet med instancenavnet ’score_txt’).
Det kan tegnes med tekstværktøjet og indstilles til dynamisk i property panelet, hvor det også formateres med lidt prøve-tekst i. Det skal være tomt for tekst når du er færdig, for teksten blir scriptet frem.
Tekst-feltet kan evt. starte ud med en forklaring:
score_txt.text = "Get "+ winScore.toString() + " points!";
Ændring af værdier
Så stilles spørgsmålet:
Hvornår eller under hvilke omstændigheder skal points- værdien stige?
Det kunne fx. være hvis noget rammer noget andet, eller hvis en status-variabel er opfyldt, eller en boolean er blevet sat til true.
I den øskede situation, som regel inden for en if-condition, øges points med den ønskede værdi:
points += 1; // eller points=points+1; // eller points+1;
Hvornår eller under hvilke omstændigheder skal points- værdien falde?
Samme overvejelser for mistede points, og hvormange af gangen:
points - -; // eller med kompleksitet fx. points/(en brøkdel af den tid der er gået);
Nye spørgsmål:
Hvornår skal points’ene vises?
Tekstfeltet påkaldes, som vist nedenfor, fx. hver gang points’ene ændres.
Hvornår har man vundet eller tabt?
Eller som i dette eksempel: Hvilke top- eller bund- værdier skal points’ene sammenlignes med?
Hvad skal der ske hvis sammenligningen passer?
Eksempel
I simpel rækkefølge
points += 2; score_txt.text = "Your points = "+ points.toString() ; if (points == winScore) { // her slukkes for evt. igangsatte ENTER_FRAME listeners gotoAndStop("win"); }
- Og tilsvarende for minus-points.
I en udregnende function
////////////// points += 2; EVALUATE(); ////////////// points --; EVALUATE(); ////////////// function EVALUATE():void { score_txt.text = "Your points = "+ points.toString() ; if (points == winScore) { // her slukkes for evt. igangsatte ENTER_FRAME listeners gotoAndStop("win"); } if (points == loseScore) { // også her slukkes for kørende ENTER_FRAME listeners gotoAndStop("lose"); } }
Created: 6 April 2008 • by admin
Categories: as3 • overblik • snippet
Comments: be the first to comment
