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

Wenn/Dann Abfrage [Flash 10]

 


AntwortenRegistrieren Seite1  

Anni84#1
Benutzerbild von Anni84
Beiträge: 5
Wohnort: NRW
Registriert: May 2011

15.05.2011, 20:19

hallo an alle,
ich hoffe, ich bin bei euch richtig.
ich habe eine einfache animation gebastelt (bin blutiger anfänger ;-)), wo ich einfache farbflächen per drag frei auf der bühne bewegen kann. nun soll aber nach dem verschieben, per klick auf einen reset button, die ausgangsposition wieder eingenommen werden. leider ist es hier nicht mit einem einfachen reset getan, sondern die felder sollen sich zu dieser position bewegen. der weg der bewegung ist egal, es soll nur nicht mit dem klick sofort die ausgangsposition erreicht sein. im endeffekt müsste ich wohl ein script haben, welches sagt, wenn die fläche nicht die ausgangsposition hat, dann gehe bitte dort hin. leider habe ich nur keine ahnung wie das gehen soll und hoffe mir kann jemand helfen.
vielen dank schon mal :-)
Schlagwörter: reseten, wenndann
andrelehnert#2
Benutzerbild von andrelehnert
Beiträge: 37
Registriert: Dec 2010

16.05.2011, 10:36

Hier mal ein Bsp:
[attachment_7174]
[attachment_7175]

hier noch der Code
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import mx.transitions.Tween;
import mx.transitions.easing.*


var numObjects:Number=5;
var objectsArray:Array=new Array();
var tweenArray:Array=new Array();
var speed:Number=2;

function iniObjects(num:Number){
     for (var i:Number=0;i<num;i++){
        var mc:MovieClip = _root.createEmptyMovieClip("mc"+i,_root.getNextHighestDepth());
        var randomWidth:Number = Math.random()*200;
        var randomHeight:Number = Math.random()*200;
        
        mc.beginFill(Math.random()*0xFFFFFF);      
        mc.moveTo(0,0);
        mc.lineTo(randomWidth,0);
        mc.lineTo(randomWidth,randomHeight);
        mc.lineTo(0,randomHeight);
        mc.lineTo(0,0);
        mc.endFill();
        mc.defaultX = mc._x = Math.random()*(Stage.width-mc._width);
        mc.defaultY = mc._y = Math.random()*(Stage.height-mc._height);   
        makeDragable(mc);
        objectsArray.push(mc);
     }
}
function makeDragable(mc:MovieClip){
     mc.onPress = function(){
        mc.startDrag();
     }
     mc.onRelease = mc.onReleaseOutside = function(){
        mc.stopDrag();
     }
}

resetBtn.onRelease=function(){
     trace("RESET");
     for (var i:Number=0;i<numObjects;i++){
        
        var mc:MovieClip = objectsArray[i];trace(mc.defaultX);
        var tX:Tween  = new Tween(mc,"_x",Regular.easeOut,mc._x,mc.defaultX,speed,true);
        var tY:Tween  = new Tween(mc,"_y",Regular.easeOut,mc._y,mc.defaultY,speed,true);
        tweenArray[i]=([tX,tY]);
     }
}
                     
iniObjects(numObjects);


Ich habe in diesem simplen Beispiel die Flashinterne Tweenklasse verwendet -
die ist aber ziemlich buggy. Ich würde Dir empfehlen, mit einer
anderen Tweenclass zu arbeiten (z.B. TweenLite von greensock, oder Caurina) -
die sind viel einfacher zu handhaben und nicht so fehleranfällig).

LG ANdré

Angehängte Dateien:
Adobe Flash Animationen as2_mcs_fahren_auf_ausgang_zurueck.swf3.94 KB
Geändert von andrelehnert am 16.05.11 um 10:44 Uhr
Anni84#3
Benutzerbild von Anni84
Beiträge: 5
Wohnort: NRW
Registriert: May 2011

Themenautor/in

16.05.2011, 19:59

wow, vielen lieben dank. die swf im anhang ist genau das was ich brauche. ich werde mich mal daran versuchen. nochmal vielen dank.
lg
Anni84#4
Benutzerbild von Anni84
Beiträge: 5
Wohnort: NRW
Registriert: May 2011

Themenautor/in

16.05.2011, 20:09

huhu nochmal,
ich habe da doch noch ein problem. ich habe gesehen, dass die farbflächen per zufall geladen werden und immer andere positionen haben. bei mir ist das ausgangsbild ein werk von mondrian. die farbflächen sollen also immer gleich sein und haben am anfang auch eine feste position. ich habe auch leider keine ahnung, wie ich diesen code umschreiben könnte, wie gesagt, ich bin ganz neu in flash. vielen dank. lg
andrelehnert#5
Benutzerbild von andrelehnert
Beiträge: 37
Registriert: Dec 2010

16.05.2011, 21:07

die farbflächen sollten dann einzelne MCs sein, die alle auf der Bühne liegen.
Gib allen einen instanznamen und ersetze die function iniObjects durch folgende:

ActionScript:
1
2
3
4
5
6
7
8
9
10
function iniObjects(){
  objectsArray=[instanzName1,instanzName2,...]   
  for (var i:Number=0;i<objectsArray.length;i++){
          var mc:MovieClip = objectsArray[i];
          mc.defaultX = mc._x;
          mc.defaultY = mc._y;
          makeDragable(mc);
         
       }
}


LG ANdré
Anni84#6
Benutzerbild von Anni84
Beiträge: 5
Wohnort: NRW
Registriert: May 2011

Themenautor/in

16.05.2011, 21:26

vielen dank für deine mühe. bis jetzt klappt alles prima. nur den reset button bekomme ich noch nicht so ganz hin. habe einen mc dafür erstellt und ihm den instanznamen reset gegeben. muss ich da noch was beachten? sorry für meine unwissenheit, ich denke für dich ist das alles ganz klar :-)
Anni84#7
Benutzerbild von Anni84
Beiträge: 5
Wohnort: NRW
Registriert: May 2011

Themenautor/in

16.05.2011, 21:29

ich habs. hatte den falschen namen. vielen, vielen dank. du hast mir sehr geholfen :-)
andrelehnert#8
Benutzerbild von andrelehnert
Beiträge: 37
Registriert: Dec 2010

16.05.2011, 21:31

Laut meinem Script lautet der Instanzname "resetBtn".
Entweder im script oder auf der Bühne ändern - dann sollte es klappen.

LG ANdré

AntwortenRegistrieren Seite1  

Schnellantwort

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

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2024 Sebastian Wichmann - Flashhilfe.de