0

私の問題は、私がやっているフラッシュの _saw は、_boundary(floor) がステージで静的であるのとは異なり、_player と一緒に移動することです。

public class PiggyRun extends MovieClip
{


private var _vy:Number;
private var _vx:Number;

スクリプト内の私のプレーヤー

public var _player:player;
public var _boundary:Boundary;
public var _rp:RG;

私は境界と同じように見たと宣言しました

public var _saw:saw;
public var _jump:Boolean=true;



    public function PiggyRun():void
    {
    _rp.visible=false;
    _vx=0;
    _vy=0;
    _player.gotoAndStop('walking');
    stage.focus= stage;
    this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
    stage.addEventListener(KeyboardEvent.KEY_DOWN, kDHandler);
    stage.addEventListener(KeyboardEvent.KEY_UP, kUHandler);


    }

        private function enterFrameHandler(e:Event):void
        {

ランニングゲームなので×を増やしました

        _vy+=2;
        _vx+=.5;

        if(_vx>10)
        {
            _vx=10
        }
        _player.x+=_vx;
        _player.y+=_vy;




        borders();
        stageFocus();
        sawblade();
        }

押し下げ時のコントロール

        private function kDHandler(e:KeyboardEvent):void
        {

            switch(e.keyCode)
            {

                case 38:
                if(_jump){
                _jump=false;    
                _vy=-20;

                }
                break;


                default:



            }
        }

この機能の内容を削除しました

        private function kUHandler(e:KeyboardEvent):void
        {
            switch(e.keyCode)
            {


            }
        }

        private function borders():void
        {
            if(_vy > 0)
            {
                if (_player.y>stage.stageHeight)
                {
                    _player.x=_rp.x;
                    _player.y=_rp.y;
                    _boundary.x=0;
                    _boundary.y=0;
                    _saw.x=0;
                    _saw.y=0;
                    _vy=0;
                    _vx=0;

                }else{
                    var border:Boolean=false;

                    if(_boundary.hitTestPoint(_player.x,_player.y,true))
                    {
                    border=true;

                    }
                        if (border)
                        {
                            while(border)
                            {

                            _player.y-=0.05;

                            _jump=true;
                            border=false;
                                if(_boundary.hitTestPoint(_player.x,_player.y,true))
                                {
                                border=true;

                                }
                            }
                            _vy=0;

                        }
                }
            }
        }

プレイヤーが鋸刃を叩いた場合、_rp の場所にリスポーンするこの関数を配置しましたが、悲しいことに、2 つのムービークリップが同時に移動するため、強制的に _saw を一緒に配置しても機能しません。

        private function sawblade():void
        {
            if(_vy > 0)
            {
                if (_player.y>stage.stageHeight)
                {
                    _player.x=_rp.x;
                    _player.y=_rp.y;
                    _boundary.x=0;
                    _boundary.y=0;
                    _saw.x=0;
                    _saw.y=0;
                    _vy=0;
                    _vx=0;

                }else{
                    var sawn:Boolean=false;

                    if(_saw.hitTestPoint(_player.x,_player.y,true))
                    {
                    sawn=true;

                    }
                        if (sawn)
                        {
                            while(sawn)
                            {

                            _player.x=_rp.x;
                            _player.y=_rp.y;
                            _boundary.x=0;
                            _boundary.y=0;
                            _saw.x=0;
                            _saw.y=0;
                            _vy=0;
                            _vx=0;
                            _jump=true;
                            sawn=false;
                               if(_saw.hitTestPoint(_player.x,_player.y,true))
                            {
                                sawn=true;

                                }
                            }
                            _vy=0;

                        }
                }
            }
        }
        private function stageFocus():void
        {
            _boundary.x+=(stage.stageWidth * 0.5)-_player.x;
            _player.x=stage.stageWidth*0.5;
            _saw.x=5;
        }





}
4

1 に答える 1

0

私はあなたの fla を見ましたが、あなたの MovieClips の配置に異常はありませんでした。問題はあなたのstageFocus機能にあります。のこぎりの位置を常に x=5 に配置し、プレーヤーをステージの中央に配置します。のみ_boundaryが移動されます。_sawですから、動いているように動かしてください_boundary

private function stageFocus():void
{
    var playerOffset:int = (stage.stageWidth * 0.5)-_player.x;

    _boundary.x+= playerOffset;
    _player.x=stage.stageWidth*0.5;
    _saw.x+=playerOffset;
}

そして、より一般的な注意点として、あなたはここで少し頭を悩ませていると思います. ゲームのコンセプトを絞り込むか、フレームワークを使用して開始してみてください。

于 2012-08-29T15:42:30.227 に答える