
Flash AS3 Schnipsel
Dokumentklasse und Preloader im ersten Frame
Wenn der erste Frame nur den Loader enthalten soll, kommt es in der Dokumentenklasse zu Problemen mit der Instanziierung bzw. Initialisierung der Klassen (MovieClips) auf dem zweiten Frame. this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, mainSwfLoading);
this.loaderInfo.addEventListener(Event.COMPLETE, mainSwfComplete);
private function mainSwfLoading(e:ProgressEvent):void{
var precent:Number=Math.floor(e.bytesLoaded*100/e.bytesTotal);
loader_mc.txt.text = precent.toString()+" %";
}
private function mainSwfComplete(e:Event):void{
this.gotoAndStop(2);
// Jedoch ist der Abspielkopf zu langsam für die Klasse
// Um sicher zu gehen das die MovieClips auch wirklich da sind bevor man sie initialisiert >
this.addEventListener(Event.ENTER_FRAME,checkINITs);
}
private function checkINITs(e:Event):void{
if (deinMovieClip_mc1 && deinMovieClip_mc2 && deinMovieClip_mc3 usw.) {
this.removeEventListener(Event.ENTER_FRAME,checkINITs);
startTheEngine();
}
}
private function startTheEngine():void {
this.mainNavi.alpha = 0.4;
.........
Zufallszahl zwischen zwei Werten und deren Rundung
var minNum = 0.45;
var maxNum = 17;
var kommastellen = 100;//10 = 1 Stelle , 100 = 2 Stellen usw.
var zufall = Math.round((Math.random() * (maxNum - minNum) + minNum)*kommastellen)/kommastellen;
trace('zufall = '+zufall);
Die schnellste Art ein Array zu mischen
package classes{
public class ArrayMixer {
private var _newArray:Array;
public function ArrayMixer():void {
}
public function mixArray(array:Array):Array {
_newArray = new Array();
while (array.length > 0) {
_newArray.push(array.splice(Math.round(Math.random() * (array.length - 1)), 1)[0]);
}
return _newArray;
}
}
}
colorTransform function mit fading
import flash.geom.ColorTransform;
_colorStart = 0xff0000;
_colorEnd = 0x0000ff;
_timer.addEventListener (TimerEvent.TIMER, updateColor);
private function updateColor (event:TimerEvent):void {
_transform.color = transformColor(_colorStart,_colorEnd,_step++,_maxStep);
_body.transform.colorTransform = _transform;
if (_step == _maxStep) {
_timer.stop ();
}
}
private function transformColor (colorStart:uint, colorEnd:uint, step:Number, maxStep:uint):uint {
var aOff:Number = (colorStart >> 24) - ( ( (colorStart >> 24) - (colorEnd >> 24) ) * ( step / maxStep ) );
var rOff:Number = (colorStart >> 16 & 0xff) - ( ( (colorStart >> 16 & 0xff) - (colorEnd >> 16 & 0xff) ) * ( step / maxStep ) );
var gOff:Number = (colorStart >> 8 & 0xff) - ( ( (colorStart >> 8 & 0xff) - (colorEnd >> 8 & 0xff) ) * ( step / maxStep ) );
var bOff:Number = (colorStart & 0xff) - ( ( (colorStart & 0xff) - (colorEnd & 0xff) ) * ( step / maxStep ) );
return (aOff << 24 | rOff << 16 | gOff << 8 | bOff);
}
Focus, Curser in Eingabe- Textfeld setzen
stage.focus = textFeld;
Wichtig bei verschachtelten Filmen: Den Pfad vor stage setzen:
container_mc.textFeld.stage.focus = container_mc.textFeld;
Dynamisch geladenen Film steuern, ansprechen
private var _loader:Loader;
private var _ladeFilm:*;
var urlReq:URLRequest = new URLRequest('ladeFilm.swf');
_loader = new Loader();
addChild (_loader);
_loader.x = 380;
_loader.contentLoaderInfo.addEventListener (Event.COMPLETE, filmGeladen);
_loader.load (urlReq);
private function filmGeladen (e:Event):void {
_ladeFilm =_loader.content;
//oder
_ladeFilm =e.target.content;
};