Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-05-2007, 15:29   #1 (permalink)
und es stimmt doch ???
 
Benutzerbild von Tjark
 
Registriert seit: Jul 2001
Ort: Bielefeld
Beiträge: 58
Tween-Klasse in for-Schleife

Hallo

ich habe ein kleines Problem mit einer for-Schleife.
Ich habe mehrere MC´s die ich mit der Tween Klasse Unendlich Bewegen lasse. Das klappt auch alles, nur leider bekomme ich es nicht hin das in for-Schleife zu bauen. Und jeden MC wollte ich nicht Manuel ansprechen, so wie es im Beispiel ist.

Code:
var stripeTween0:Tween = new Tween(stripe_mc.f0, "_x", mx.transitions.easing.None.easeNone, stripe_mc.f0._x, Stage.width, randomRange(2, 15), true);
stripeTween0.onMotionFinished = function() {
	stripeTween0.yoyo();
};
var stripeTween1:Tween = new Tween(stripe_mc.f1, "_x", mx.transitions.easing.None.easeNone, stripe_mc.f1._x, Stage.width, randomRange(2, 15), true);
stripeTween1.onMotionFinished = function() {
	stripeTween1.yoyo();
};
var stripeTween2:Tween = new Tween(stripe_mc.f2, "_x", mx.transitions.easing.None.easeNone, stripe_mc.f2._x, Stage.width, randomRange(2, 15), true);
stripeTween2.onMotionFinished = function() {
	stripeTween2.yoyo();
};
...
Versucht habe ich es bis jetzt so...
Nur komme ich leider nicht weiter

Code:
for(var i:Number=0; i<9; i++){
	var _level0["stripeTween"+i]:Tween = new Tween(stripe_mc.f[i], "_x", mx.transitions.easing.None.easeNone, 0, Stage.width, randomRange(2, 15), true);
	_level0["stripeTween"+i].onMotionFinished = function() {
		_level0["stripeTween"+i].yoyo();
	};
}
Vielen Dank...
Tjark ist offline   Mit Zitat antworten
Alt 21-05-2007, 15:42   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Vielleicht so?

PHP-Code:
_level0["stripeTween"+i].onMotionFinished = function() {
    
this.yoyo();
}; 
gruß, gaspode

Geändert von gaspode (21-05-2007 um 15:43 Uhr)
gaspode ist offline   Mit Zitat antworten
Alt 22-05-2007, 10:36   #3 (permalink)
AS ALIEN
 
Benutzerbild von Orbiter
 
Registriert seit: Feb 2006
Ort: Berlin im Dorf
Beiträge: 179
Doch besser so:

PHP-Code:
for( var i:Number=0i<9i++ )
{
    var 
tw:Tween = new Tweenstripe_mc["f"+i], "_x"mx.transitions.easing.None.easeNone0Stage.widthrandomRange(215), true );
    
tw.onMotionFinished = function() 
    {
        
this.yoyo();
    };

Orbiter ist offline   Mit Zitat antworten
Alt 22-05-2007, 10:41   #4 (permalink)
und es stimmt doch ???
 
Benutzerbild von Tjark
 
Registriert seit: Jul 2001
Ort: Bielefeld
Beiträge: 58
Danke euch beiden

Super Hilfe...

Gruß,
Tjark
Tjark ist offline   Mit Zitat antworten
Alt 22-05-2007, 12:00   #5 (permalink)
und es stimmt doch ???
 
Benutzerbild von Tjark
 
Registriert seit: Jul 2001
Ort: Bielefeld
Beiträge: 58
Zitat:
Zitat von Orbiter Beitrag anzeigen
Doch besser so:

PHP-Code:
for( var i:Number=0i<9i++ )
{
    var 
tw:Tween = new Tweenstripe_mc["f"+i], "_x"mx.transitions.easing.None.easeNone0Stage.widthrandomRange(215), true );
    
tw.onMotionFinished = function() 
    {
        
this.yoyo();
    };

Jetzt habe ich doch noch eine Sache die ich nicht hin bekomme
Die MC´s sollen beim ersten durchlauf an einer Zufälligen Position der X-Achse Starten. Nach "onMotionFinished" sollen diese MC´s dann kommplet von 0 bis Stage.width immer durchlaufen.

Vielen Dank noch mal,
Tjark
Tjark ist offline   Mit Zitat antworten
Alt 22-05-2007, 14:03   #6 (permalink)
AS ALIEN
 
Benutzerbild von Orbiter
 
Registriert seit: Feb 2006
Ort: Berlin im Dorf
Beiträge: 179
Falls Du es noch nicht selber herausgefunden hast:

PHP-Code:
for( var i:Number=0i<9i++ )
{
    var 
tw:Tween = new Tweenstripe_mc["f"+i], "_x"mx.transitions.easing.None.easeNone0+Math.random()*(Stage.width-stripe_mc["f"+i]._width), Stage.widthrandomRange(215), true );
    
tw.onMotionFinished = function() 
    {
        
delete this;
        var 
tw:Tween = new Tweenstripe_mc["f"+i], "_x"mx.transitions.easing.None.easeNone0Stage.widthrandomRange(215), true );
        
tw.onMotionFinished = function()
        {
            
this.yoyo();
        };
    };

Schönen Tag!
Orbiter ist offline   Mit Zitat antworten
Alt 22-05-2007, 14:41   #7 (permalink)
und es stimmt doch ???
 
Benutzerbild von Tjark
 
Registriert seit: Jul 2001
Ort: Bielefeld
Beiträge: 58
Hallo Orbiter,

so hatte ich es auch Probiert.
Allerdings laufen die MC´s dann nach dem ersten "onMotionFinished" nicht mehr korrekt weiter. Sie Springen dann Direkt auf die Linke (0px) Seite ohen einen Tween gemacht zu haben.
Dachte auch schon das das Problem der "begin" und "finish" Punkt ist. Da er ja schon einen weg gelaufen ist, muss er ja bei "Stage.width" anfangen und zu 0 laufen. Das geht leider aber auch nicht.

Zur besseren Übersicht Poste ich mal das ganze Script.

PHP-Code:
import mx.transitions.Tween;
import mx.transitions.easing.*;

function 
drawQuadrat(_mcbreitecolor) {
    var 
breite/2;
    
with (_mc) {
        
beginFill(colorrandomRange(10100));
        
randomWidth randomRange(2100);
        
moveTo(-randomWidth, -b);
        
lineTo(-randomWidthb);
        
lineTo(randomWidthb);
        
lineTo(randomWidth, -b);
        
endFill();
    }
// end func drawQuadrat

function stripe(stripe_mcanzXanzYquadratSizecolor) {
    var 
0;
    for (var 
0y<anzYy++) {
        for (var 
0x<anzXx++) {
            var 
_mc stripe_mc.createEmptyMovieClip('f'+ii);
            
drawQuadrat(_mcquadratSizecolor);
            
_mc._x randomRange(0Stage.width);
            
_mc._y = (y-anzY/2)*quadratSize;
            
_mc.x;
            
_mc.y;
            
i++;
        }
    }
// end func stripe

function randomRange(minmax) {
    var 
randomNum Math.floor(Math.random()*(max-min+1))+min;
    return 
randomNum;
// end func randomRange

_root.createEmptyMovieClip('stripe_mc'1);
stripe_mc._x 0;
stripe_mc._y 100;
stripe(stripe_mc91500x0000ff);

for( var 
i:Number=0i<9i++ )
{
    var 
tw:Tween = new Tweenstripe_mc["f"+i], "_x"mx.transitions.easing.None.easeNone0+Math.random()*(Stage.width-stripe_mc["f"+i]._width), Stage.widthrandomRange(215), true );
    
tw.onMotionFinished = function() 
    {
        
delete this;
        var 
tw:Tween = new Tweenstripe_mc["f"+i], "_x"mx.transitions.easing.None.easeNone0Stage.widthrandomRange(215), true );
        
tw.onMotionFinished = function()
        {
            
this.yoyo();
        };
    };

Vielen Dank,
Tjark
Tjark ist offline   Mit Zitat antworten
Alt 22-05-2007, 15:19   #8 (permalink)
AS ALIEN
 
Benutzerbild von Orbiter
 
Registriert seit: Feb 2006
Ort: Berlin im Dorf
Beiträge: 179
Mein Vorschlag ohne Tween Klasse:
PHP-Code:
for( var i:Number=0i<9i++ )
{
    var 
speed randomRange(215);
    var 
temp:MovieClip stripe_mc["f"+i];
    
temp._x Math.random()*( Stage.width temp._width );
    
temp.onEnterFrame = function():Void
    
{
        if ( 
this._x || this._x > ( Stage.width this._width ) )
        {
            
speed randomRange(215);
            
speed *= -1;
        }
        
this._x += speed;
    };

Orbiter ist offline   Mit Zitat antworten
Alt 22-05-2007, 15:25   #9 (permalink)
und es stimmt doch ???
 
Benutzerbild von Tjark
 
Registriert seit: Jul 2001
Ort: Bielefeld
Beiträge: 58
Hast du das bei dir getestet?
Bei laufen die einfach in eine Richtung von der Bühne?

trotzdem danke schon mal für deine Mühe...

Tjark
Tjark ist offline   Mit Zitat antworten
Alt 22-05-2007, 15:41   #10 (permalink)
AS ALIEN
 
Benutzerbild von Orbiter
 
Registriert seit: Feb 2006
Ort: Berlin im Dorf
Beiträge: 179
Habe ich nicht getestet sollte aber funktionieren.
Du kannst mal versuchen:

PHP-Code:
for( var i:Number=0i<9i++ )
{
    var 
temp:MovieClip stripe_mc["f"+i];
    
temp._x Math.random()*( Stage.width temp._width );
    
temp.speed randomRange(215);
    
temp.onEnterFrame = function():Void
    
{
        if ( 
this._x || this._x > ( Stage.width this._width ) )
        {
            
this.speed randomRange(215);
            
// Bewegung umgekehren
            
this.speed *= -1;
        }
        
this._x += this.speed;
    };

Orbiter ist offline   Mit Zitat antworten
Alt 22-05-2007, 15:52   #11 (permalink)
und es stimmt doch ???
 
Benutzerbild von Tjark
 
Registriert seit: Jul 2001
Ort: Bielefeld
Beiträge: 58
Schon ein mal einen Schritt weiter
Den ersten weg bis Stage.width laufen die Mc`s. Danach laufen Sie leider von der Bühne bei 0px weg.

gruß,
Tjark
Tjark ist offline   Mit Zitat antworten
Alt 22-05-2007, 16:15   #12 (permalink)
AS ALIEN
 
Benutzerbild von Orbiter
 
Registriert seit: Feb 2006
Ort: Berlin im Dorf
Beiträge: 179
Das liegt an der Neuzuweisung von speed.
Habe es gerade getestet. Lässt man speed wies ist dann gehts.
Dieser Vorschlag funktioniert:

PHP-Code:
for( var i:Number=0i<9i++ )
{
    var 
temp:MovieClip stripe_mc["f"+i];
    
temp._x Math.random()*( Stage.width temp._width );
    
temp.speed randomRange(215);
    
temp.onEnterFrame = function():Void
    
{
        
// das lässt sich bestimmt noch eleganter lösen
        
if ( this._x 10 this.speed randomRange(215);
        if ( 
this._x || this._x > ( Stage.width this._width ) )
        {
            
// Bewegung umgekehren
            
this.speed *= -1;
        }
        
this._x += this.speed;
    };

Orbiter ist offline   Mit Zitat antworten
Alt 22-05-2007, 16:20   #13 (permalink)
und es stimmt doch ???
 
Benutzerbild von Tjark
 
Registriert seit: Jul 2001
Ort: Bielefeld
Beiträge: 58
Super...

So geht es 100 %.

Vielen Dank,
Tjark
Tjark ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele