ActionScript 3.0 - replay button

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/actionscript-3-0-replay-button_223247/page_1 - zur Vollversion wechseln!


b_d schrieb am 01.04.2011 um 10:49

irgendwie bin ich ärger unfähig oder da hats was. preloader in AS3 krieg ich zam aber keinen replay button (bzw. goto) :rolleyes:

code auf dem frame sieht so aus:

Code: PHP
stop();

MyButton.addEventListener(MouseEvent.CLICK, release);

function release(event:MouseEvent):void 
{ 
	gotoAndPlay(310); 
} 

eventlistener ist gesetzt. function ist gesetzt. geht trotzdem nicht ... folgender fehler erscheint, sobald die animation bei dem frame angelangt ist, 309 in dem fall:

Code:
TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
	at emotion_short_preloader_fla::MainTimeline/frame310()

google spuckt nur aus, dass in dem fall kein eventlistener gesetzt ist. das ist er aber o_O

big tia!


ica schrieb am 01.04.2011 um 11:15

MyButton gibts als Instanz?


b_d schrieb am 01.04.2011 um 11:24

jup! ich bin jetzt auf was draufgekommen.

die schaltfläche ist auch als solche deklariert und animiert (mouse over, on click, blablabla). das ganze produziert so den besagten fehler code.

WENN ICH ABER die schaltfläche auf movieclip ändere funktioniert der code plötzlich (!) sprich keine fehlermeldung und der button macht was er soll. AAAABER: die button animation wird in einer endlosschleife extrem schnell durchgespielt. die 4 zustände spielt er also ab. naja, is ja jetzt ein movieclip und kein button mehr.

aber wenn man das in AS3 jetzt so mach, wie animiert ich dann buttons?


ica schrieb am 01.04.2011 um 11:36

Was soll das Ding (das Projekt) denn machen? Ich halte von den Timeline goto Zeug nicht wirklich viel.


b_d schrieb am 01.04.2011 um 11:42

ganz einfach. ist eine simple produkt animation. und der kunde soll nur die möglichkeit bekommen, das ganze nochmal anzugucken ohne F5 drücken zu müssen ;)

bis 309 frames geht die animation, dort ist dann quasi standbild mit eben dem button. wenn man den klickt solls bei 310 weitergehn, wo die dinge rausfaden und die animation von forne anfängt. thats it. mit AS2 waren das 5 sekunden arbeit.

ich mein, jetzt gehts. ich musste einfach den button nicht als button sondern als movieclip deklarieren. aber wie ich den jetzt selber animiert (mouseover, onclick) ... keine ahnung :/


ica schrieb am 01.04.2011 um 11:50

naja - im prinzip ganz einfach. du gibst dem button diverse event listener für ROLL_OUT und ROLL_OVER. in diesen funktionen animierst du den button. dazu empfehle ich die TweenMax klassen von greensock.

bsp:

xxx.addEventlistener(MouseEvent.ROLL_OVER, onRollOverHandler);
xxx.addEventlistener(MouseEvent.ROLL_OUT, onRollOutHandler);

private function onRollOverHandler(event:MouseEvent):void
{
Tweenmax.to(buttoninstance, 0.5, {alpha:0.7});
}
private function onRollOutHandler(event:MouseEvent):void
{
Tweenmax.to(buttoninstance, 0.5, {alpha:1});
}


b_d schrieb am 01.04.2011 um 12:08

gut, ich finds so zwar 1000x komplizierter, was mich eben in AS2 wirklich <10sek gekostet hat, aber gut :D

tweenmax ist drinne (com folder wo die fla ist) und importiert. trotzdem kommt ->

1120: Zugriff auf eine nicht definierte Eigenschaft Tweenmax.

:( :D


ica schrieb am 01.04.2011 um 12:50

die imports gibts? und natürlich TweenMax

das ist nicht kompliziert. im flash selbst würd ich sowieso keine zeile code schreiben. nimm den flash builder oder evtl. flashdevelop.


b_d schrieb am 01.04.2011 um 12:54

jup. per import com.greensock.TweenMax; und im orner com -> greensock gibts TweenMax.as

ich glaub ich crap langsam hochkant drauf, bleibt er halt nicht animiert :rolleyes:


ica schrieb am 01.04.2011 um 13:43

poste mal den ganzen code - so ist das ein ratespiel.


b_d schrieb am 01.04.2011 um 13:44

Code: PHP
import flash.events.Event;
import flash.events.MouseEvent;
import com.greensock.TweenMax;

stop();

MyButton.addEventListener(MouseEvent.CLICK, dothis);
MyButton.addEventListener(MouseEvent.ROLL_OVER, onRollOverHandler);
MyButton.addEventListener(MouseEvent.ROLL_OUT, onRollOutHandler);

function dothis(event:MouseEvent):void 
{ 
	gotoAndPlay(310); 
}

function onRollOverHandler(event:MouseEvent):void
{
	Tweenmax.to(MyButton, 0.5, {alpha:0.7});
}
 function onRollOutHandler(event:MouseEvent):void
{
	Tweenmax.to(MyButton, 0.5, {alpha:1});
} 


ica schrieb am 01.04.2011 um 14:00

hab oben ja eh schon geschrieben, dass es TweenMax ist und nicht Tweenmax.


b_d schrieb am 01.04.2011 um 14:06

ach, jah. sowas übersieht man ja leicht ;D

muss mir jetzt mal die TweenMMMMMMMMax doku anschaun. der button sollte nämlich ein biiiiisserln mehr machen.

tausend dank auf jeden fall :)


ica schrieb am 01.04.2011 um 14:30

schau dir auf jeden fall das killtweens zeugs an - sonst kommen sich die vom mouse over/out in die quere da die ja noch weiterlaufen wenn du schnell raus/rein fahrst.


b_d schrieb am 01.04.2011 um 14:32

auf genau das bin ich grad draufgekommen :D

aber nettes zeug! kannt ich nicht. wird mir glaub ich bissi an arbeit abnehmen :p (wenn ichs mal raus hab) thx 4 that!




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025