Ich weiß, das ist alte Technologie, aber ich möchte nur ein Update auf eine Flash Xmas-Karte, die ich aussende. Im Grunde benutze ich ein Partikel-Skript (siehe unten), das meiner Maus folgt und einige Goldpartikel ausspuckt. Ich möchte dem etwas entgegensetzen, so dass es hinter einem getweenten Objekt folgt, das über den Bildschirm läuft. Ich dachte, es könnte ein Fall sein, den Event-Listener zu etwas zu ändern, aber ich kann es nicht herausfinden.Actionscript 2 Partikel
EDIT - Mein Ziel ist ein Movieclip namens Schlitten
Jede Hilfe sehr geschätzt.
Script (AS2)
//import bitmap class
import flash.display.BitmapData;
//Settings
var particleMaxSpeed:Number = 3;
var particleFadeSpeed:Number = 5;
var particleTotal:Number = 5;
var particleRange:Number = 25;
/**
* createExplosion(target X position, target Y position)
*/
function createExplosion(targetX:Number, targetY:Number):Void
{
//run for loop based on particleTotal
for (var i:Number = 0; i<particleTotal; i++) {
//attach bitmap from the library with the linked name "adobe_flash"
var myBmp:BitmapData = BitmapData.loadBitmap("fire.jpg");
//create the "main_holder" movieclip that will hold our bitmap
var particle_mc = _root.createEmptyMovieClip("main_holder", _root.getNextHighestDepth());
//create an "internal_holder" movieclip inside "main_holder" that we'll use to center the bitmap data
var internal_holder:MovieClip = particle_mc.createEmptyMovieClip("internal_holder", particle_mc.getNextHighestDepth());
//set "internal_holder" x and y position based on bitmap size
internal_holder._x = -myBmp.width/2;
internal_holder._y = -myBmp.height/2;
//finally, attach the bitmapData "myBmp" to the movieclip "internal_holder"
internal_holder.attachBitmap(myBmp, internal_holder.getNextHighestDepth(), "never", true);
//set position & rotation, alpha
particle_mc._x = targetX
particle_mc._y = targetY
particle_mc._rotation = random(360);
particle_mc._alpha = random(50)+50;
//set particle boundry
particle_mc.boundyLeft = targetX - particleRange;
particle_mc.boundyTop = targetY - particleRange;
particle_mc.boundyRight = targetX + particleRange;
particle_mc.boundyBottom = targetY + particleRange;
//set speed/direction of fragment
particle_mc.speedX = Math.random(particleMaxSpeed)-Math.random(particleMaxSpeed);
particle_mc.speedY = Math.random(particleMaxSpeed)-Math.random(particleMaxSpeed);
particle_mc.speedX *= particleMaxSpeed
particle_mc.speedY *= particleMaxSpeed
//set fade out speed
particle_mc.fadeSpeed = Math.random(particleFadeSpeed)*particleFadeSpeed;
//just a visual particle counter
numberOfParticles++;
//make fragment move using onEnterFrame
particle_mc.onEnterFrame = function():Void
{
//update alpha, x, y
this._alpha -= this.fadeSpeed;
this._x += this.speedX;
this._y += this.speedY;
//if fragment is invisible or out of bounds, remove it
if (this._alpha <= 0 || this._x < this.boundyLeft || this._x > this.boundyRight || this._y < this.boundyTop || this._y > this.boundyBottom)
{
this.removeMovieClip();
//
numberOfParticles--;
}
}
}
}
/**
* Mouse Controls
*/
//create an object that we'll listen to
mouseListener = new Object();
//on Click, createExplosion
mouseListener.onMouseDown = function() {
//createExplosion(_xmouse, _ymouse);
}
mouseListener.onMouseMove = function() {
createExplosion(_xmouse, _ymouse);
}
//add listener
Mouse.addListener(mouseListener);