PDA

Volledige versie bekijken : [FlashDevelop] gotoAndPlay werkt niet


X_OwNeR_X
%Europe/Berlin %436 %2010, 10:27
Ik embed een swf waarin een aantal animaties staan, en nu wil ik graag als ik op een knop klik, hij naar frame 4 gaat.

De swf bestaat uit 4 frames met Movieclips erin die elk ook weer een aantal frames bezitten, weet niet of dit het probleem veroorzaakt maar meld het maar even erbij.

[Embed(source = '../bin/startscreen.swf')]
private var ShapeKiwi:Class;
private var kiwiFly:MovieClip;

kiwiFly = new ShapeKiwi() as MovieClip;
addChild(kiwiFly);

En dan bij de knop:
kiwiFly.gotoAndPlay(4);

Uit deze trace FlashConnect.trace(kiwiFly.totalFrames); krijg ik 0 terug. Vandaar dat hij het niet doet maar hoe los ik het op? :S

e.l.dam
%Europe/Berlin %686 %2010, 16:27
De trace kan 0 geven als de kiwiFly = new ... later wordt uitgevoerd.

Daarnaast, als je doet trace(MovieClip(kiwiFly).totalFrames), wat krijg je dan?

X_OwNeR_X
%Europe/Berlin %377 %2010, 09:03
Nee hij wordt niet later uitgevoerd. Heb et aan een collega gevraagd maar die wist het ook niet... Heb et toen maar opgelost door alle movieclips uit de swf apart in te laden. :)

Meer werk maar het werkt wel :)

Jan
%Europe/Berlin %463 %2010, 11:07
package
{
import flash.display.*;
import flash.utils.*
import flash.events.*
public class Main extends Sprite
{
[Embed(source = 'test.swf')]
private var ShapeKiwi:Class;

public function Main()
{
var kiwiFly = new ShapeKiwi();
kiwiFly.addEventListener(Event.COMPLETE, onComplete)
addChild(kiwiFly);
}
private function onComplete(event:Event):void
{
var swf:MovieClip = event.currentTarget.getChildAt(0).content as MovieClip;
trace(swf.totalFrames);//60
swf.gotoAndStop(30);
}
}
}

Flex embed die swf als ByteArray (in een DefineBinaryData swftag).
Als jij new ShapeKiwi() doet dan wordt 'achter de schermen' die swf als ByteArray geladen met een Loader en loadBytes().
Je kan dat zelf ook afhandelen door de juiste mimetype op te geven zodat je de 'raw bytes' krijgt die je dan zelf met een Loader en loadBytes kan inladen. (Geeft toch meer controle vind ik.)
package
{
import flash.display.*;
import flash.utils.*
import flash.events.*
public class Main extends Sprite
{
[Embed(source='test.swf', mimeType="application/octet-stream")]
private var ShapeKiwi:Class;

public function Main()
{
var loader = new Loader()
loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, onComplete);
loader.loadBytes(new ShapeKiwi() as ByteArray);
addChild(loader);
}
private function onComplete(event:Event):void
{
var swf:MovieClip = event.currentTarget.content as MovieClip;
trace(swf.totalFrames);//60
swf.gotoAndStop(30);
}
}
}

Groeten;
Jan