私は大学のユニットの一部としてゲームを作っていますが、AS3を初めて使用するため、それを行うための最良の方法がわかりません。私はパーティーにそれぞれ異なる8人のゲストがいて、性格、趣味、興味が異なります。ゲームはこのように機能します。ゲストをクリックしてステージ上の任意の場所をクリックすると、そのゲストはそれに向かって移動します。ゲストをクリックしてから別のゲストをクリックすると、最初にクリックしたゲストが2番目にクリックしたゲストに向かって移動し、ゲストが近づくと互いに話し合います。
8人のゲスト全員が、移動に関して同じ機能とコードを共有します。クリックアンドムーブの部分は完了しましたが、Guest01クラスで実行されましたが、すべてのゲストが同じようになります。ゲストごとに8つの異なるクラスを作成する必要がありますか、それとも配列を使用して作成する必要があります。私は本当にこれを始める方法を知りません。以下は、クリックして移動するためのコードです。
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.*;
public class Guest01 extends MovieClip
{
var walkSpeed:Number = 5;
var oldPosX;
var oldPosY;
var myGlow:GlowFilter = new GlowFilter();
public function Guest01()
{
addEventListener(MouseEvent.MOUSE_OVER, addGlow);
}
public function addGlow(event:MouseEvent):void
{
filters = [myGlow];
addEventListener(MouseEvent.MOUSE_OUT, removeGlow);
addEventListener(MouseEvent.CLICK, ready);
}
function removeGlow(event:MouseEvent):void
{
filters = [];
}
public function ready(event:MouseEvent):void
{
filters = [myGlow];
stage.addEventListener(MouseEvent.MOUSE_DOWN, walk);
removeEventListener(MouseEvent.MOUSE_OUT, removeGlow);
}
function walk(event:MouseEvent):void
{
oldPosX = parent.mouseX;
oldPosY = parent.mouseY;
rotation = Math.atan2(oldPosY - y,oldPosX - x) / Math.PI * 180;
filters = [];
stage.removeEventListener(MouseEvent.MOUSE_DOWN, walk);
stage.addEventListener(Event.ENTER_FRAME, loop);
}
function loop(event:Event):void
{
var dx:Number = oldPosX - x;
var dy:Number = oldPosY - y;
var distance:Number = Math.sqrt((dx*dx)+(dy*dy));
if (distance<walkSpeed)
{
// if you are near the target, snap to it
x = oldPosX;
y = oldPosY;
removeEventListener(Event.ENTER_FRAME, loop);
}
else
{
x = x+Math.cos(rotation/180*Math.PI)*walkSpeed;
y = y+Math.sin(rotation/180*Math.PI)*walkSpeed;
}
}
}
}