1

非常に単純なシューティングゲームの例があります。しかし、それはAS2にあります。ここにソース:

 speed = 4;
 depth = 0;
 nose = 50;

        _root.onMouseMove = function() {
        updateAfterEvent();
        xdiff = _root._xmouse-spaceShip._x;
        ydiff = _root._ymouse-spaceShip._y;
        angle = Math.atan2(ydiff, xdiff);
   angle = angle*180/Math.PI;
    spaceShip._rotation = angle;
};

_root.onMouseDown = function() {
angle = spaceShip._rotation;
angle = angle*Math.PI/180;
++depth;
name = "projectile"+depth;
_root.attachMovie("projectile", name, depth);

//projectile - it is bullet
_root[name]._x = spaceShip._x+nose*Math.cos(angle);
_root[name]._y = spaceShip._y+nose*Math.sin(angle);
_root[name].xmov = speed*Math.cos(angle);
_root[name].ymov = speed*Math.sin(angle);
_root[name].onEnterFrame = function() {
 this._x += this.xmov;
 this._y += this.ymov;
};
  };

同じことをしたいのですが、as3.

変換してみました。これが私が持っているものです: PS - 私は初心者です。以下のコードに腹を立てないでください:)

     var nose=55;
     var angle;
     var acc=1;
  Mouse.hide();
  stage.addEventListener(MouseEvent.MOUSE_MOVE, cursor);
    function cursor(e:MouseEvent):void {
      cross.x=mouseX;
      cross.y=mouseY;
   }
      stage.addEventListener(Event.ENTER_FRAME, rotation2);
    function rotation2(event:Event):void {
  var xdiff=mouseX-spaceShip.x;
  var ydiff=mouseY-spaceShip.y;
 angle=Math.atan2(ydiff,xdiff);
 angle=angle*180/Math.PI;
   spaceShip.rotation=angle;
  }
   stage.addEventListener(MouseEvent.CLICK, shoot);
    function shoot(event:MouseEvent):void {

  angle = spaceShip.rotation;
  angle = angle*Math.PI/180;

bullet.x=spaceShip.x+nose*Math.cos(angle);
bullet.y=spaceShip.y+nose*Math.sin(angle);
  var xmov=acc*Math.cos(angle);
  var ymov=acc*Math.sin(angle);

 stage.addEventListener(Event.ENTER_FRAME, action);
  function action(event:Event):void {
bullet.x+=xmov;
bullet.y+=xmov;
  }
 }
  1. 弾丸が表示されますが、1 回だけで、正しいパスに移動しませんでした。
  2. 上記の例のように、それを行う方法はたくさんの弾丸になりますか?
4

2 に答える 2

1

attachMovie()と同じではありませんaddChild()

  • MovieClip.attachMovie()新しいシンボルを作成し、MovieClip
  • DisplayObjectContainer.addChild()DisplayObject指定されたをコンテナに追加します

(AS2で)呼び出す代わりに:

_root.attachMovie("projectile", name, depth);

次のようなものを使用する必要があります (AS3 で):

var proj:DisplayObject = new projectile();
proj.name = "projectile" + depth;
stage.addChild(proj);

depthAS3にはありませんのでご注意ください。
を使用してこれをだますことができaddChildAt()ます。

于 2012-11-22T11:35:18.633 に答える
1

素早い返信ありがとうございます。私はこのように問題を解決します:

私はこれを追加しました:

    var bullet1:Bullet = new Bullet ();
 addChild (bullet1);

「bullet1」の下のすべての「bullet」を変更しました。

プログラムは正しく動作するようになりました。

于 2012-11-23T15:18:07.863 に答える