2017-11-28 17 views
0

私はこれが古い技術だと知っていますが、私は送信するフラッシュのカードにアップデートしたいだけです。基本的に私はマウスの後ろにいくつかの金粒子を噴出するパーティクルスクリプト(以下にあります)を使用しています。私はこれをいくつか反対して、スクリーンを横切るトゥイーンオブジェクトの背後にあるようにしたいと思います。私はイベントリスナーを何かに変更したかもしれないと思っていたが、それを理解できなかった。アクションスクリプト2粒子

EDITは - 私のオブジェクトは、すべてのヘルプは感謝

そりと呼ばれるムービークリップです。

スクリプト(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); 

答えて

0

あなたはcreateExplosion機能ごとにフレームを呼び出し、それをsleighのxを渡す必要があり、yは、マウス座標の代わりに座標。

sleigh.onEnterFrame = function() { 
    createExplosion(sleigh._x, sleigh._y); 
} 

mouseListener.onMouseMove = function() { 
    createExplosion(_xmouse, _ymouse); 
} 

交換し、他のマウスリスナーのものを削除し

関連する問題