Antworten auf deine Fragen:
Neues Thema erstellen

Brauche Hilfe bei action script und Workshop

jander2005

Noch nicht viel geschrieben

hallo.

Als erstes suche ich einen guten Workshop um Spiele zu Programmieren.
ich habe mir bereits einige bücher gekauft aber sie sind nicht grade der Brüller.

Alle bücher gehen nur grob über verschioedene funktionen drüber aber erklären nicht grade viel.

hat jemand ein isbn oder einen link zu einem guten Workshop oder Tutorial wo man einiges an Action Script lernen kann ?

*************************
Ich habe folgendes problem:

ich habe drei animationen die ich zufällig in der reihenfolge abspielen möchte.
Dazu muß ich die math funktion benutzen. Das Script sähe ungefähr so aus. Wäre nett wenn mir einer mit dem Script helfen könnte. ich habe cs4.

function math*3
if (result ==1) gotoandPlay Animation1
if (result==2) gotoandPlay animation2
if (result==3) gotoandplay Animation3

************************

Für ein spiel brauche ich einen Balken der sich langsam füllt. Wenn eine animation gespielt wird füllt sich langsam der balken und bei einem bestimmten wert des Balkens werden zusätzliche buttons sichtbar die vorher unsichtbar geschalltet wurden.

Ich mußte action script 3 benutzen weil einige Funktionen mit Action script2 nicht anerkannt werden.

mein problem war nun das die buttons die freigeschalltet wurden plötzlich wieder unsichtbar gemacht wurden nachdem ich einen button losliess und die ausgangsanimation gespielt wurde.

Frage: Muß ich umbeding actionscript 3 benutzen wenn ich spiele mit füllenden balken programmiere oder geht es auch mit as2 ?

Wie gesagt ich suche einen guten Workshop oder ein gutes buch wo Projektorientiert scriptfunktionen erklärt werden.
 

jander2005

Noch nicht viel geschrieben

AW: Brauche Hilfe bei action script und Workshop

das erste problem konnte ich selber lösen^^.

Das Script sieht folgendermassen aus: Actionscript 2.0

var Ergebniss:Number=random(3);

if (Ergebniss == 0) {
gotoAndPlay(1);
}
else if (Ergebniss == 1) {
gotoAndPlay(25);
}
else if (Ergebniss == 2) {
gotoAndPlay(51)
}

Super^^.

Nun habe ich folgendes problem zu lösen.

ich möchte den progressbar füllen lassen wenn ich einen Button drücke.
Ich mußte Actionscript 3.0 einsetzen.

Ist nur das problem das der balken sich weigert zu wachsen. Es erscheint immer nur ein klitzekleiner Balken und das wars.

mein Script sieht folgendermassen aus:

stop();
import flash.events.*;

bar.width = 0;
bar.addEventListener(Event.ENTER_FRAME, action);

function action(e:Event):void
{


btnanim1.addEventListener(MouseEvent.MOUSE_DOWN, anim1mousedown);
btnanim1.addEventListener(MouseEvent.MOUSE_UP, anim1mouseup);

btnanim2.addEventListener(MouseEvent.MOUSE_DOWN, anim2mousedown);
btnanim2.addEventListener(MouseEvent.MOUSE_UP, anim2mouseup);

btnanim3.addEventListener(MouseEvent.MOUSE_DOWN, anim3mousedown);
btnanim3.addEventListener(MouseEvent.MOUSE_UP, anim3mouseup);

function anim1mousedown(event:MouseEvent):void {
bar.width =+0.5;
}

function anim1mouseup(event:MouseEvent):void {
bar.width =-0.25;
}

function anim2mousedown(event:MouseEvent):void {
bar.width =+0.5;
}

function anim2mouseup(event:MouseEvent):void {
bar.width =-0.25;
}

function anim3mousedown(event:MouseEvent):void {
bar.width =+0.5;
}

function anim3mouseup(event:MouseEvent):void {
bar.width =-0.25;
}

}

ich habe einen einzigen frame und das script global in der Scriptebene plaziert.
habe ich bei irgendeinem Befehl einen fehler gemacht ? Durch drücken der buttons soll einfach nur der Balken wachsen. Der film hat wie gesagt nur einen einzigen Frame.
 

keul3

3dsMax | 3D-Contest

AW: Brauche Hilfe bei action script und Workshop

habs nur auf die schnelle überflogen, aber mit =+ bzw. =- setzt du immer nur einen Wert, ohne dabei aufzusummieren, richtig geht das mit += bzw. -=

Zu einer anderen Frage, wenn du CS4 hast, dann benutze AS3, es ist einfach einfacher, da im Vergleich zu 2.0 vieles vereinheitlicht wurde.
 

jander2005

Noch nicht viel geschrieben

AW: Brauche Hilfe bei action script und Workshop

Ok, das mit dem += / -= war schon mal richtig.

nun folgendes:

Wenn ich den Button drücke springt der progressbar sofort auf die position und wenn ich mehrmalls den button drücke füllt sich der bar über seine Grenze hinaus.

Wie kann ich eine maximale Bargrösse definieren und wieso wird der wert den ich angegeben habe nicht innerhalb einer sekunde gefüllt so wie es sein sollte ?

Der bar soll eine breite von 600 Pixel haben. Wenn die 600 Pixel erreicht sind soll der Bar voll sein und nicht mehr weiter wachsen.
 
A

ad86

Guest

AW: Brauche Hilfe bei action script und Workshop

Hi,


Du kannst Deine Methoden anim1mousedown, anim2mousedown, anim3mousedown und anim1mouseup, anim2mouseup, anim3mouseup auch zusammen fassen, da Sie ja je das Gleiche machen (einmal +0.5, einmal -0.25)

Code:
//Als ERsatz anim1mousedown, anim2mousedown, anim3mousedown
function animMouseDown(event:MouseEvent):void {
   bar.width +=0.5;
   if (bar.width>=600){
      bar.width=600;
   }
}
//Als ERsatz anim1mouseup, anim2mouseup, anim3mouseup
function animMouseUp(event:MouseEvent):void {
   bar.width -=0.25;
   if (bar.width<=0){
      bar.width=0;
   }
}

MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Brauche Hilfe bei action script und Workshop

Gottverdammt.

Es funktioniert nicht. Das letzte mal habe ich es hinbekommen.

ich habe jetzt platzhakllteranimationen hinzugefügt aber alles ist noch beim alten.

Mein script sieht folgendermassen aus:

stop();
import flash.events.*;

bar.width = 0;
bar.addEventListener(Event.ENTER_FRAME, action);

if (bar.width<=0){
bar.width=0;
}

if (bar.width>=600){
bar.width=600;
}


function action(e:Event):void
{


btnanim1.addEventListener(MouseEvent.MOUSE_DOWN, anim1mousedown);
btnanim1.addEventListener(MouseEvent.MOUSE_UP, anim1mouseup);

btnanim2.addEventListener(MouseEvent.MOUSE_DOWN, anim2mousedown);
btnanim2.addEventListener(MouseEvent.MOUSE_UP, anim2mouseup);

btnanim3.addEventListener(MouseEvent.MOUSE_DOWN, anim3mousedown);
btnanim3.addEventListener(MouseEvent.MOUSE_UP, anim3mouseup);

function anim1mousedown(event:MouseEvent):void {
gotoAndStop(2);
bar.width +=0.5;

}

function anim1mouseup(event:MouseEvent):void {
gotoAndStop(1);
bar.width -=0.25;


}

function anim2mousedown(event:MouseEvent):void {
gotoAndStop(3);
bar.width +=0.5;

}

function anim2mouseup(event:MouseEvent):void {
gotoAndStop(1);
bar.width -=0.25;


}

function anim3mousedown(event:MouseEvent):void {
gotoAndStop(4);
bar.width +=0.5;

}

function anim3mouseup(event:MouseEvent):void {
gotoAndStop(1);
bar.width -=0.25;


}

}

-----------------------------------------------------------

Wieso wird der Progressbar einfach sofort um den Wert aufgestockt und bleibt dann auf dem wert hängen und wächst nicht weiter ?

Der befehl mit dem +=0,5; muß falsch sein.
Der Bar soll sich innerhaklb einer Sekunde um den angegebenen Wert erhöhen.
Wenn ich die animation stoppe also der mouseup befehl aktiviert wird soll der bar langsam schrumpfen bis er auf 0 steht.

Muß ich irgendeinen anderen befehl einsetzen ?
Wenn ich jetzt die animationen spiele und dann loslasse springt der bar sofort auf 0.

ich würde iegntlich zu gerne die flashdatei hochladen. habe aber keinen account. gibt es da ne andere möglichkeit ?
 

keul3

3dsMax | 3D-Contest

AW: Brauche Hilfe bei action script und Workshop

Hi,

ersteinma würd ich mir abgewöhnen Funktionen in Funktionen zu deklarieren, kann leicht zu Problemen führen, hatte ich selbst am anfang so gemacht, und hatte einige Probleme. Außerdem ist so die Übersicht besser;)

Zu deinem Problem:
Soweit ich das sehe, wird deine Bar um .5 erhöht, wenn du einen Click machst. Damit sich der Wert konstant in einer Sekunde um den Wert erhöht würd ich EnterFrame oder einen Timer benutzen. Am besten du initialisierst mit dem MouseEvent ein EnterFrame-Event oder Timer. Du hast es quasi umgekehrt gemacht.
 
A

ad86

Guest

AW: Brauche Hilfe bei action script und Workshop

Hi,

Beispielhaft für Dich:

Code:
import flash.utils.Timer;

var timer:Timer;

//Als ERsatz anim1mousedown, anim2mousedown, anim3mousedown
function animMouseDown(event:MouseEvent):void {
   timer= new Timer(500);//in Millisekunden, aktuell also 0.5 Sekunden
   timer.addEventListener(TimerEvent.TIMER, addBarHandler);
   timer.start();
}

function addBarHandler(event:TimerEvent):void {
   bar.width +=0.5;
   if (bar.width>=600){
      timer.stop();
      bar.width=600;
   }
}

//Als ERsatz anim1mouseup, anim2mouseup, anim3mouseup
function animMouseUp(event:MouseEvent):void {
   timer= new Timer(500);//in Millisekunden
   timer.addEventListener(TimerEvent.TIMER, minBarHandler);
   timer.start();
}

function minBarHandler(event:TimerEvent):void {
   bar.width -=0.25;
   if (bar.width<=0){
      timer.stop();
      bar.width=0;
   }
}

MFG ad86
 
Zuletzt bearbeitet von einem Moderator:

jander2005

Noch nicht viel geschrieben

AW: Brauche Hilfe bei action script und Workshop

Also ich habe es jetzt mit dem timer Event Probiert aber er sagt mir im Debugger das er den Timer nicht umwandeln kann und das Systhem friert ein.

Jetzt mal für absolute Anfänger. Ich habe immer noch Probleme das script mit den Funktionen anchzuvollziehen. Ich habe die basis von einem anderen User erhallten und durfte damit rumspielen. Leider habe ich die alte datei verloren.

Ich habe in meinem Script 2 Blöcke.

Erstmal den :

--------------------------------------------------------------
stop();
import flash.events.*;

bar.width = 0;
bar.addEventListener(Event.ENTER_FRAME, action);

if (bar.width<=0){
bar.width=0;
}

if (bar.width>=600){
bar.width=600;
}
---------------------------------------------------------

Und dann kommt dieser hier:

-------------------------------------------------------------

function action(e:Event):void
{


btnanim1.addEventListener(MouseEvent.MOUSE_DOWN, anim1mousedown);
btnanim1.addEventListener(MouseEvent.MOUSE_UP, anim1mouseup);

btnanim2.addEventListener(MouseEvent.MOUSE_DOWN, anim2mousedown);
btnanim2.addEventListener(MouseEvent.MOUSE_UP, anim2mouseup);

btnanim3.addEventListener(MouseEvent.MOUSE_DOWN, anim3mousedown);
btnanim3.addEventListener(MouseEvent.MOUSE_UP, anim3mouseup);

function anim1mousedown(event:MouseEvent):void {
gotoAndStop(2);
bar.width +=0.5;

}

function anim1mouseup(event:MouseEvent):void {
gotoAndStop(1);
bar.width -=0.25;


}

function anim2mousedown(event:MouseEvent):void {
gotoAndStop(3);
bar.width +=0.5;

}

function anim2mouseup(event:MouseEvent):void {
gotoAndStop(1);
bar.width -=0.25;


}

function anim3mousedown(event:MouseEvent):void {
gotoAndStop(4);
bar.width +=0.5;

}

function anim3mouseup(event:MouseEvent):void {
gotoAndStop(1);
bar.width -=0.25;


}

}

------------------------------------------------------

Ich habe versucht den "on (enterFrame) {" Befehl hinzuzufügen aber er sagt mir andauernd das da ein unnötiger character ist.
Keine Ahnung was er will.

Was meintest du damit ich würde eine Funktion in einer Funktion deklarieren ?
In welchen block gehören die Befehle mit dem +=0.5 ?

Den enterFrame Befehl havbe ich hier ja schon eingefügt.

bar.addEventListener(Event.ENTER_FRAME, action);

Aber dieser bezieht sich nur auf den Progressbar. Aber das script müsste doch alle scripts auf den bar übertragen oder nicht ?

Ich dachte da an sowas hier aber er gibt mir eine Fehlermeldung:

on (enterFrame) {
function anim1mousedown(event:MouseEvent):void {
gotoAndStop(2);
bar.width +=0.5;
}
}

Der Debugger sagt mir andauernt das da irgendwo eine Klammer stören würde.
Ist dieser Befehl überhaupt richtig aufgeführt oder muß ich ihn irgendwie mit der "function" verbinden ?
 
A

ad86

Guest

AW: Brauche Hilfe bei action script und Workshop

Hi,

Also ich habe es jetzt mit dem timer Event Probiert aber er sagt mir im Debugger das er den Timer nicht umwandeln kann und das Systhem friert ein.

Tschuldigung mein Fehler.

Code:
function addBarHandler(event:[COLOR="red"]MouseEvent[/COLOR]):void {

ersetzten durch

Code:
function addBarHandler(event:[COLOR="Red"]TimerEvent[/COLOR]):void {
(das gleiche bei minBarHandler (alles in Bezug auf meinem vorherigen Post))
Dann sollte alles funktionieren.

Ich habe versucht den "on (enterFrame) {" Befehl hinzuzufügen aber er sagt mir andauernd das da ein unnötiger character ist.
Keine Ahnung was er will.

AS2 ist nicht AS3. Mit dem
Code:
bar.addEventListener(Event.ENTER_FRAME, action);
hast Du schon DEinen EventListener. Die Methode ist dann die "action"-Methode.

Was meintest du damit ich würde eine Funktion in einer Funktion deklarieren ?
In welchen block gehören die Befehle mit dem +=0.5 ?

Schau Dir mal ganz genau Dein Script an. Du hast eine Methode action, die in jeden Frame aufgerufen wird, warum? Und in dieser hast Du dann weitere Methoden deklariert (z.B. "anim1mousedown")

Ich dachte da an sowas hier aber er gibt mir eine Fehlermeldung:

on (enterFrame) {
function anim1mousedown(event:MouseEvent):void {
gotoAndStop(2);
bar.width +=0.5;
}
}
Die erste Zeile ist AS2, der REst dann wohl AS3. Du kannst Beides nicht mixen. Und hier hast Du auch schon wieder eine Funktion "anim1mousedown" in einer anderen AS2-Funktion "on(enterFrame)" gepackt.

MFG ad86
 

jander2005

Noch nicht viel geschrieben

AW: Brauche Hilfe bei action script und Workshop

Na Super. :-(

2 Fragen:

Ich habe angefangen mit As2 befehlen zu arbeiten. Ist der Unterschied zwischen AS2 und AS3 so gravierend ?
Ich dachte AS3 würde einfach nur zusätzliche Funktionen haben aber ich wußte nicht das der grundaufbau völlig verschieden ist.

Ich muß eh bis nächsten monat warten aber gibt es irgendeine ISBN mit einem Guten Buch wo man von 0 mit AS3 durchstarten kann ? ich komme mit meinem latein nicht mehr weiter. Ich brauche umbedingt Schulungsmaterial.

Nächste frage:

Ich habe in Actionscript 3 Animationsbuttons und einen Progressbar.
Animation1 == btn_anim1
Animation2 == btn_anim2
Animation3 == btn_anim3

Progressbar == bar
Frame2 = mc1
Frame3=mc2
Frame4=mc3

Auf frame 1 ist das Basisbild. Wenn die Animationen gestoppt werden wenn ich den knopf loslasse springt die Animation wieder auf Frame 1 und der Progressbar soll langsam bis 0 sinken.
Animation 1 bis 3 hat einen bestimmten Wert +=0.5 der in einer Sekunde steigen soll wenn der Button gedrückt bleibt.
Wenn der button losgelassen wird sinkt der button in einer Sekunde um -=0.25. Bis er 0 erreicht.

Wie müsste da das script aussehen ? Ich habe wohl As2 und AS3 zusammengemischt obwohl ich dachte das es richtig sei.

kann mir da einer mit nem Script aushelfen bitte ?
Ausserdem suche ich dringend ein gutes schulungsbuch für actionscript 3. Aber möglichst Projectbasierend und nicht wieder so nen müll wo nur grob Befehle erklärt werden aber mehr Fragen als antworten aufbringen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben