Neler yeni

Yeni mesajlar Yeni konular En çok mesaj En çok tepki En çok görüntülenen

ActionScript3: Animasyonu Geciktirme ve Smooth Efekti Verme

stormturk

🌱Yeni Üye🌱
Katılım
8 Tem 2010
Mesajlar
6
Tepkime puanı
1
merhaba arkadaşlar,

hazırladığım banner'da actionscript yoluyla ekrana yazı getiriyorum. ancak bu yazının gelişini birkaç saniye ertelemem ve gözüktükten birkaç saniye sonra da yazıyı silmem lazım.

timer ya da interval kullandığımda yazıyı getiriyorum ve bir süre sonra siliyorum, ancak banner'da resimler döngü içerisinde olduğundan ilk resimden sonra timer ya da interval çalışmıyor.

kod şu şekilde:

Kod:
public class ImageRotator extends Sprite
{
private var ... ; //Some variables

public function ImageRotator(xmlPath:String = "images.xml", interval:int = 8301):void
{
    timer = new Timer(interval);
    loadXML(xmlPath);
}

private function loadXML(file:String):void
{
    urlLoader = new URLLoader(new URLRequest(file));
    urlLoader.addEventListener(Event.COMPLETE, par***ML);
}

private function par***ML(e:Event):void
{
    xml = new XML(e.target.data);
    loadImages();
}

private function loadImages():void
{
    for (var i:int = 0; i < xml.children().length(); i++)
    {
        var loader:Loader = new Loader();
        loader.load(new URLRequest(xml.children()[i].@src));
        imagesVector.push(loader);
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, sortImages);
    }
}

private function sortImages(e:Event):void
{
    imagesCounter++;

    for (var i:int = 0; i < imagesVector.length; i++)
    {
        imagesVector.reverse();
        addChild(imagesVector[i]);
    }

    if (imagesCounter == imagesVector.length)
    {
        createInfoPanel();
        timer.addEventListener(TimerEvent.TIMER, autoChange);
        timer.start();
    }

}

private function createInfoPanel():void
{
    infoPanel.graphics.beginFill(0x000000, 0.0);
    infoPanel.graphics.drawRect(0, 0, 967, 138);
    infoPanel.graphics.endFill();

////burada 2 saniye gecikmeyle addInfoPanel() fonksiyonunu çağırmam,
////burada da 2 saniye daha sonra removeInfoPanel() fonksiyonunu çağırmam gerekli.

////daha sonra da infoPanel'i ekrana ekliyorum zaten
    addChild(infoPanel);
}

private function addInfoPanel():void {
    titleField.text = xml.children()[infoCounter]. @ title;
    titleField.x = 425;
    titleField.y = 0;

    description.text = xml.children()[infoCounter]. @ description;
    description.x = 427;
    description.y = 26;

    infoPanel.y = 300;
    infoPanel.addChild(titleField);
    infoPanel.addChild(description);
}

private function removeInfoPanel():void {

    infoPanel.removeChild(titleField);
    infoPanel.removeChild(description);
}

private function addActions():void
{
    //Some function
}

private function changeImage(e:MouseEvent):void
{
    //Image changing function
}

private function changeDepth(e:TweenEvent):void
{
    //Some function
}

private function autoChange(e:TimerEvent):void
{
    //Some function
}
}

yukarıdaki kod örneği temizlenmiş hali. interval'i aşağıdaki şekilde kullanıyordum:

Kod:
private function createInfoPanel():void
{
    //lines above code sample
    intervalInfoPanel = setInterval(addInfoPanel,2000);

    addChild(infoPanel);
}

private function addInfoPanel():void {
    //lines above code sample
    clearInterval(intervalInfoPanel);
    intervalInfoPanelRemove = setInterval(removeInfoPanel,3500);
}

private function removeInfoPanel():void {
    //lines above code sample
    clearInterval(intervalInfoPanelRemove);
}

ve söylediğim gibi bu şekilde kullanınca birinci kullanımdan sonra clear yaptığım için tekrar gelmiyordu...

bir de tweenlite kullandım, aşağıdaki kodu denedim:
Kod:
TweenLite.delayedCall(2, addInfoPanel);
TweenLite.delayedCall(4, removeInfoPanel);

ama bunda da bir kez gözüküyor, sonra bir daha gelmiyor.

aynı şekilde yazıyı ekrana getirirken smooth efekti vermek istiyorum.
tweenlite kullandım şu şekilde:
Kod:
titleField.alpha = 0;
TweenLite.to(titleField, 1.0, { alpha: 1 });

herhangi bir uyarı vermiyor ama ekranda gözükmüyor da...

yardımcı olacak arkadaş varsa kaynak dosyalarını da paylaşabilirim.
 

Benzer konular

Üst