(category) LIST of posts

Drop_and_Catch classes

fruit class

package {
	import flash.display.MovieClip;
	import flash.events.*;
	public class fruit extends MovieClip {
		var ySpeed;
		var points;
		public function fruit() {
		}
		function INIT() {
			position();
			addEventListener(Event.ENTER_FRAME, update);
		}
		function update(e:Event) {
			y+=ySpeed;
			if (y>stage.stageHeight) {
				position();
			}
		}
		function position() {
			y=0;
			x=Math.random()*stage.stageWidth-width;
			ySpeed=(Math.random()*10)+2;
		}
		function EXIT() {
			removeEventListener(Event.ENTER_FRAME, update);
		}
	}
}

basket class

package {
	import flash.display.MovieClip;
	import flash.events.*;
	public class basket extends MovieClip {
		public function basket() {
			INIT();
		}
		function INIT() {
			addEventListener(Event.ENTER_FRAME, update);
		}
		function update(e:Event) {
			x=stage.mouseX;
			y=stage.stageHeight-height;
		}
		function EXIT() {
			removeEventListener(Event.ENTER_FRAME, update);
		}
	}
}

doc class

package {
	import flash.display.MovieClip;
	import flash.events.*;
	import flash.ui.Mouse;
	public class doc extends MovieClip {
		var hart=new fruit  ;
		var knife=new fruit  ;
		var ourBasket=new basket  ;
		var score:int=0;
		public function doc() {
			stop();
			INIT();
			buttonMode=true;
		}
		function INIT() {		
			score=0;
			Mouse.hide();
			addChild(hart);
			hart.gotoAndStop("hart");
			hart.points=10;
			hart.INIT();
			addChild(knife);
			knife.gotoAndStop("knife");
			knife.points=-10;
			knife.INIT();
			addChild(ourBasket);
			ourBasket.INIT();
			addEventListener(Event.ENTER_FRAME, update);
		}
		function update(e:Event) {
			testCollision(hart);
			testCollision(knife);
		}
		function testCollision(someFruitName) {
			if (someFruitName.hitTestObject(ourBasket)) {
				score+= someFruitName.points;
				someFruitName.position();
				result();
			}
		}
		function result() {
			trace("Du har " + score + " points");
			if (score>20) {
				EXIT();
				gotoAndStop("win");
			}
			if (score<-20) {
				EXIT();
				gotoAndStop("lose");
			}
		}
		function EXIT() {
			Mouse.show();
			removeEventListener(Event.ENTER_FRAME, update);
			removeChild(hart);
			hart.EXIT();
			removeChild(knife);
			knife.EXIT();
			removeChild(ourBasket);
			ourBasket.EXIT();
		}
		function goGame(e:MouseEvent) {
			gotoAndStop("game");
			INIT();
		}/**/
	}
}

Bat_Ball classes

bat class

package {
	import flash.display.MovieClip;
	import flash.events.*;
	public class bat extends MovieClip {
		public function bat() {
			//INIT();
		}
		function INIT() {
			addEventListener(Event.ENTER_FRAME, update);
		}
		function update(e:Event) {
			y= stage.stageHeight-(height/2);
			x= stage.mouseX;
		}
		function EXIT() {
			removeEventListener(Event.ENTER_FRAME, update);
		}
	}
}

ball class

package {
	import flash.display.MovieClip;
	import flash.events.*;
	public class ball extends MovieClip {
		var xSpeed=10;
		var ySpeed=10;
		var margin=width/2;
		public function ball() {
			//INIT();
		}
		function INIT() {
			y=0+margin;
			addEventListener(Event.ENTER_FRAME, update);
		}
		function update(e:Event) {
			if (x<0+margin) {
				x=0+margin;
				xBounce();
			}
			if (x>stage.stageWidth-margin) {
				x=stage.stageWidth-margin;
				xBounce();
			}
			if (y<0+margin) {
				y=0+margin;
				yBounce();
			}
			if (y>=stage.stageHeight) {
				y=0+margin;
			}
			x+=xSpeed;
			y+=ySpeed;
		}
		function xBounce() {
			xSpeed=xSpeed*-1;
			gotoAndPlay("pong");
		}
		function yBounce() {
			ySpeed=ySpeed*-1;
			gotoAndPlay("pong");
		}
		function EXIT() {
			removeEventListener(Event.ENTER_FRAME, update);
		}
	}
}

doc class

package {
	import flash.display.MovieClip;
	import flash.events.*;
	import flash.text.*;
	public class doc extends MovieClip {
		var ourBat = new bat();
		var ourBall = new ball();
		var score:int;
		var points:int=1;
		var scoreMIN:int=-2;
		var scoreMAX:int=2;
		public function doc() {
			stop();
			//INIT();
			back_but.addEventListener(MouseEvent.CLICK, goGame);
		}
		function INIT() {
			score=0;
			score_txt.text=score+" points yet";
			addChild(ourBat);
			ourBat.INIT();
			addChild(ourBall);
			ourBall.INIT();
			addEventListener(Event.ENTER_FRAME, update);
		}
		function update(e:Event) {
			if (ourBall.hitTestObject(ourBat)) {
				ourBall.yBounce();
				score+=points;
			}
			if (ourBall.y>stage.stageHeight) {
				score-=points;
			}
			result();
		}
		function result() {
			//trace("Du har " + score + " points");
			score_txt.text="points: "+score+" out of "+scoreMAX ;
			if (score==scoreMAX) {
				EXIT();
				gotoAndStop("win");
			}
			if (score==scoreMIN) {
				EXIT();
				gotoAndStop("lose");
			}
		}
		function EXIT() {
			removeEventListener(Event.ENTER_FRAME, update);
			removeChild(ourBat);
			ourBat.EXIT();
			removeChild(ourBall);
			ourBall.EXIT();
		}
		function goGame(e:MouseEvent) {
			gotoAndStop("game");
			INIT();
		}/**/
	}
}

Load presentation

Tilgængelige variabler defineret øverst.
I en class, skal de stå i class definitionen, før constructer’en (hoved-functionen).

var film1:URLRequest = new URLRequest("undermappenavn/anim_playback.swf");
var film2:URLRequest = new URLRequest("undermappenavn/bat_ball_2a.swf");
var film3:URLRequest = new URLRequest("undermappenavn/fruit_extra_new_b.swf");

I en class, vil denne typisk stå i constructor’en:

var ldr:Loader = new Loader();

I nedenstående script loades og vises hver film i hver sin knap-funktion:

film1_but.addEventListener(MouseEvent.MOUSE_DOWN,film1_Handler);
function film1_Handler(e:MouseEvent):void {
    SoundMixer.stopAll();
    ldr.load(film1);
    box_mc.addChild(ldr);
    stage.frameRate=12;
}
film2_but.addEventListener(MouseEvent.MOUSE_DOWN,film2_Handler);
function film2_Handler(e:MouseEvent):void {
    SoundMixer.stopAll();
    ldr.load(film2);
    box_mc.addChild(ldr);
    stage.frameRate=32;
}
film3_but.addEventListener(MouseEvent.MOUSE_DOWN,film3_Handler);
function film3_Handler(e:MouseEvent):void {
    SoundMixer.stopAll();
    ldr.load(film3);
    box_mc.addChild(ldr);
    stage.frameRate=32;
}

Nedenstående knap-funktioner tømmer loaderen, ændrer boksens egenskaber, og til sidst ‘taler’ direkte til den loadede swf’s egen tidslinie :

unload_but.addEventListener(MouseEvent.MOUSE_DOWN,unload_Handler);
function unload_Handler(e:MouseEvent):void {
    SoundMixer.stopAll();
    ldr.unloadAndStop();
    stage.frameRate=12;
}
distort_but.addEventListener(MouseEvent.MOUSE_DOWN,distort_Handler);
function distort_Handler(e:MouseEvent):void {
    box_mc.scaleX = box_mc.scaleY = .6;
    box_mc.rotation=9;
}
normal_but.addEventListener(MouseEvent.MOUSE_DOWN,normal_Handler);
function normal_Handler(e:MouseEvent):void {
    box_mc.scaleX = box_mc.scaleY = .6;
    box_mc.x = 180;
    box_mc.y = 64;
    box_mc.rotation=0;
}
cheat_but.addEventListener(MouseEvent.MOUSE_DOWN,cheat_Handler);
function cheat_Handler(e:MouseEvent):void {
    MovieClip(ldr.content).gotoAndStop("win");
/*
tilsvarende, kaldt fra den loadede swf's tidslinie, ville være:
//////////
MovieClip(parent.parent).play();
/////////
*/
}

Sound object

Load lyden

var my_file:URLRequest=new URLRequest("lyd.mp3");
var my_sound:Sound=new Sound();
my_sound.load(my_file);

Når et Sound-objekt først har loadet en lyd, kan det ikke genbruges. Nyt Sound-objekt for ny lyd.

Channel Control

Play og stop

var channel1:SoundChannel;
channel1 = my_sound.play(0,10); //fra start, 10 gange
channel1.stop();

Position til pause

var pos:int= channel1.position;
channel1=my_sound.play(pos);

Stop all sounds

SoundMixer.stopAll();

Link lyden

Forudsætter en importeret lyd i library med linkage-name: ding.
Lyd i library, kan du linke med højreklik > Properties > Export for ActionScript > og classNavn, fx. ‘ding’.
(Flash vil som regel undre sig over, at der ikke ligger en class med det navn, og hvis ikke du med vilje har lavet en ekstern actionscript-fil med samme navn, skal du bare svare ok til dens forslag.)
Derefter kan den kaldes frem således:

//A
    import flash.media.*;
//B
    var lyd:Sound=new ding();
    var sndc:SoundChannel;
//C//D
    //play og stop
    sndc = lyd.play();
    sndc.stop();
//D
    //stop alle lyde
    SoundMixer.stopAll();

Timer

// timer: 3 gange 1 sekund – og så slut.

var myTimer:Timer = new Timer(1000, 3);//delay, repatCount
myTimer.start(); 
 
myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
function timerHandler(e:TimerEvent):void {
		trace("Tick "+myTimer.currentCount);
}
myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, completeHandler);
function completeHandler(e:TimerEvent):void {
		trace("Ding completed at "+myTimer.repeatCount);
}

// En knap sætter tim i gang – og ændrer dens værdier

someButton.addEventListener(MouseEvent.MOUSE_DOWN, TimerJet);
function TimerJet(e:MouseEvent) {
	var tim = new Timer (1000, 3);
	tim.start();
	tim.addEventListener(TimerEvent.TIMER, onTimer);
	function onTimer(e:TimerEvent):void {
		trace("Tick "+tim.currentCount);
	}
	tim.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
	function onTimerComplete(e:TimerEvent):void {
		trace("Ding completed at "+tim.repeatCount); 
 
		tim.reset();
		tim.delay = 500;
		tim.repeatCount = 5;
		tim.start();
	}
}

Timer – forklaret

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;
}