Miért dobálja be random a MovieClip-eket a kódom?
Sziasztok!
Egy hete próbálkozom az as3-mal, több kevesebb sikerrel. Írtam ezért egy kódot, ami libraryból beolvas néhány képet(:MovieClip), majd azoknak a pozíciionálásával cserélgetem őket. Ez addig tökéletesen működik amíg el nem kezdek játszadozni az addEventListener függvénnyel és a képek alfa csatornájával. A kód a következő:
A tünet amit generál, nagyon furcsa (legalábbis számomra) ugyanis az első és a második kép közti átmenetet szépen létrehozza, majd egyet kihagy (tehát dupla annyi ideig marad benn) utána bevillan az a kép aminek a 2. cserénél jönnie kellett volna, amit aztán felülír az a kép, ami normálisan jelenik meg. Ezután pedig a korábbihoz képest, őrült sebességgel váltakoznak a képek.
(Ha valaki szeretne pár potyapontot so-n: http://stackoverflow.com/questions/3075497/why-does-my-movieclips-load-random)
■ Egy hete próbálkozom az as3-mal, több kevesebb sikerrel. Írtam ezért egy kódot, ami libraryból beolvas néhány képet(:MovieClip), majd azoknak a pozíciionálásával cserélgetem őket. Ez addig tökéletesen működik amíg el nem kezdek játszadozni az addEventListener függvénnyel és a képek alfa csatornájával. A kód a következő:
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.utils.setInterval;
/**
* Library items, converted to MovieClips
*/
var image_movieclip_array:Array = [
Image1,
Image2,
Image3
]
// Initialize vars
var stage_img_array:Array = new Array();
var prev_img:Number = 2;
var curr_img:Number = 0;
for(var i = 0; i < image_movieclip_array.length; i++){
var img:MovieClip = new image_movieclip_array[i]();
addChild(img);
stage_img_array.push(img);
if(i < 2)
stage_img_array[i].alpha = 0;
}
function imageRotator()
{
this.swapChildren(stage_img_array[prev_img],stage_img_array[curr_img])
stage_img_array[prev_img].addEventListener(Event.ENTER_FRAME, fl_FadeSymbolOut);
stage_img_array[curr_img].addEventListener(Event.ENTER_FRAME, fl_FadeSymbolIn);
/**
* This branch sets the next lineup
*/
if(this.curr_img <= 2)
{
this.prev_img = this.curr_img;
this.curr_img += 1;
}
if(this.curr_img == 2)
this.curr_img = 0;
}
var interval = setInterval(imageRotator,5000);
function fl_FadeSymbolIn(event:Event):void
{
stage_img_array[curr_img].alpha += 0.02;
if(stage_img_array[curr_img].alpha >= 1)
{
stage_img_array[curr_img].removeEventListener(Event.ENTER_FRAME, fl_FadeSymbolIn);
}
}
function fl_FadeSymbolOut(event:Event):void
{
stage_img_array[prev_img].alpha -= 0.02;
if(stage_img_array[prev_img].alpha <= 0)
{
stage_img_array[prev_img].removeEventListener(Event.ENTER_FRAME, fl_FadeSymbolOut);
}
}
import flash.display.DisplayObject;
import flash.utils.setInterval;
/**
* Library items, converted to MovieClips
*/
var image_movieclip_array:Array = [
Image1,
Image2,
Image3
]
// Initialize vars
var stage_img_array:Array = new Array();
var prev_img:Number = 2;
var curr_img:Number = 0;
for(var i = 0; i < image_movieclip_array.length; i++){
var img:MovieClip = new image_movieclip_array[i]();
addChild(img);
stage_img_array.push(img);
if(i < 2)
stage_img_array[i].alpha = 0;
}
function imageRotator()
{
this.swapChildren(stage_img_array[prev_img],stage_img_array[curr_img])
stage_img_array[prev_img].addEventListener(Event.ENTER_FRAME, fl_FadeSymbolOut);
stage_img_array[curr_img].addEventListener(Event.ENTER_FRAME, fl_FadeSymbolIn);
/**
* This branch sets the next lineup
*/
if(this.curr_img <= 2)
{
this.prev_img = this.curr_img;
this.curr_img += 1;
}
if(this.curr_img == 2)
this.curr_img = 0;
}
var interval = setInterval(imageRotator,5000);
function fl_FadeSymbolIn(event:Event):void
{
stage_img_array[curr_img].alpha += 0.02;
if(stage_img_array[curr_img].alpha >= 1)
{
stage_img_array[curr_img].removeEventListener(Event.ENTER_FRAME, fl_FadeSymbolIn);
}
}
function fl_FadeSymbolOut(event:Event):void
{
stage_img_array[prev_img].alpha -= 0.02;
if(stage_img_array[prev_img].alpha <= 0)
{
stage_img_array[prev_img].removeEventListener(Event.ENTER_FRAME, fl_FadeSymbolOut);
}
}
A tünet amit generál, nagyon furcsa (legalábbis számomra) ugyanis az első és a második kép közti átmenetet szépen létrehozza, majd egyet kihagy (tehát dupla annyi ideig marad benn) utána bevillan az a kép aminek a 2. cserénél jönnie kellett volna, amit aztán felülír az a kép, ami normálisan jelenik meg. Ezután pedig a korábbihoz képest, őrült sebességgel váltakoznak a képek.
(Ha valaki szeretne pár potyapontot so-n: http://stackoverflow.com/questions/3075497/why-does-my-movieclips-load-random)
Tipp
[off]
Itt-ott hiányzik amúgy pontosvessző.
A stackoverflow-s link meg "nem működik".
[/off]