{lang: 'de'}
Flashhilfe.de - Flash Community

MC bei Mausbewegung abspielen [Flash 11]

 


AntwortenRegistrieren Seite1  

drossow#1
Benutzerbild von drossow
Beiträge: 2
Registriert: Jun 2008

23.04.2011, 11:48

Hallo,

ich habe hier ein Script von Flash MX5 also altes Actionscript.. und hätte das gerne in AS3 geändert. Worauf muss ich denn achten, bzw. was ist anders?

onClipEvent(load) {
   bb = 640;
   frames = _totalframes;
   s = 0.3;
   v = 0.3;
   speed = 5;
   f = 5;
   
   this.onEnterFrame = function() {
   tf = (frames/bb)*_root._ymouse;
   f = this._currentframe;
   speed = speed*v+(tf-f)*s;
   f += Math.round(speed);
   this.gotoAndStop(f);
   }
   }

grüße

domi
Schlagwörter: AS3, Mausbewegung
willie33#2
Benutzerbild von willie33
Beiträge: 147
Wohnort: Qo'noS
Registriert: Nov 2009

23.04.2011, 12:55

Ich würde das so lösen:
1. Ich erstelle einen Container-MovieClip der alle relevanten Schlüsselbilder enthält.
2. Dessen erstes Schlüsselbild erhalt folgenden Code:
ActionScript:
1stop();

3. Nun lege ich eine Instanz des erstellten Container-MCs auf die Bühne und weise ihm den Namen "containerMC" zu.
4. Dann erhält das erste Schlüsselbild der Bühne folgenden Code:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import flash.events.Event;

var bb:Number = 640;
var frames:uint = containerMC.totalFrames;
var s:Number = 0.3;
var v:Number = 0.3;
var speed:Number = 5;
var f:int = 5;
var tf:Number;

this.stage.addEventListener(Event.ENTER_FRAME, _onEnterFrame);

function _onEnterFrame(e:Event):void
{
      tf = (frames/bb) * this.stage.mouseY;
      f = containerMC.currentFrame;
      speed = speed * v + (tf - f) * s;
      f = f + Math.round(speed);
      containerMC.gotoAndStop(f);
}


Dies ist ein Lösungsansatz wie ich ihn mir vorstelle. Allerdings musst du dabei beachten, dass dies lediglich eine direkte AS3-Portierung deines AS2-Codes darstellt, und nicht getestet wurde.

PS.: Es wäre viel augenfreundlicher, wenn du deinen Code zwischen Script BB-Tags setzen würdest.
Loading comments...
Geändert von willie33 am 23.04.11 um 18:40 Uhr
micB#3
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

23.04.2011, 13:51

hi,

das script von willie33 wird so nicht funktionieren, da dort die variablen (bb, s, speed ...) alle in einer funktion erstellt werden. damit sind sie lokal und werden in der enterFrame-funktion nicht erkannt.

lass vielleicht einfach die erste funktion weg und halte es simpel:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var bb:Number = 640;
var frames:uint = containerMC.totalFrames;
var s:Number = 0.3;
var v:Number = 0.3;
var speed:Number = 5;
var f:int = 5;
var tf:Number;

this.addEventListener(Event.ENTER_FRAME, _onEnterFrame);


function _onEnterFrame(e:Event):void {
     tf = (frames/bb) * this.stage.mouseY;
     f = containerMC.currentFrame;
     speed = speed * v + (tf - f) * s;
     f = f + Math.round(speed);
     trace(f);
     containerMC.gotoAndStop(f);
}
willie33#4
Benutzerbild von willie33
Beiträge: 147
Wohnort: Qo'noS
Registriert: Nov 2009

23.04.2011, 18:39

@micB: Oh hast recht... Ich hatte zuvor nachgedacht, das ENTER_FRAME Event in einer lokalen Funktion innerhalb der Funktion zu plazieren. Dann hab ich gedacht das wär ein schlechter Stil und, tja! Ich hab das korrigiert.
Loading comments...
drossow#5
Benutzerbild von drossow
Beiträge: 2
Registriert: Jun 2008

Themenautor/in

26.04.2011, 08:24

Hallo leute,

vielen Dank für eure Hilfe. Mit dem Script von micB funktioniert es.

gruß
domi

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Das Leben geht weiter [Flash CS5] 12.01.2021 - Indy_Crossover
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de