私は現在、ゲームに取り掛かっています。私はflashとactionscript 3を使っています(私は古いバージョンのFlashを使用しています。これは2015年版ですが、それでもまだAdobe Flashと呼ばれていました)。最初のフレームにコードを配置すると、プレーヤーオブジェクトの動きはうまくいきますが、2番目のフレームにすべてを配置すると、これは機能しません。どうして?コードは全く同じです!そして、私はフレーム2からのゲームプレイを開始した方が(少なくともこのフレームで最初のレベルを保持していれば)より便利だと思います。フレーム1では、メインメニューを持っています。だから、ここで私は、現在のフレーム1に持っているコードです:ゲームは2番目のフレームでは再生されません
import flash.display.MovieClip;
import flash.events.Event;
stop();
var optionsActive:Boolean = false;
var gamePaused:Boolean = false;
startGame();
function startGame():void
{
if (optionsActive == false)
{
optionsUI.visible = false;
}
else
{
optionsUI.visible = true;
}
menuTextOptions_active.addEventListener(MouseEvent.CLICK, activateMenuOptions);
menuTextNewgame_active.addEventListener(MouseEvent.CLICK, activateStartNewGame);
}
function activateStartNewGame(event:Event)
{
gotoAndStop(2);
}
function activateMenuOptions(event:Event)
{
optionsActive = true;
optionsUI.visible = true;
if (this.currentFrame == 1)
{
if (menuTextContinue_active.visible != false)
{
menuTextContinue_active.visible = false;
}
if (menuTextNewgame_active.visible != false)
{
menuTextNewgame_active.visible = false;
}
if (menuTextOptions_active.visible != false)
{
menuTextOptions_active.visible = false;
}
if (menuTextExitgame_active.visible != false)
{
menuTextExitgame_active.visible = false;
}
if (menuButton_continue.visible != false)
{
menuButton_continue.visible = false;
}
if (menuButton_newgame.visible != false)
{
menuButton_newgame.visible = false;
}
if (menuButton_options.visible != false)
{
menuButton_options.visible = false;
}
if (menuButton_exitgame.visible != false)
{
menuButton_exitgame.visible = false;
}
}
}
は、そして、ここで私は現在、フレーム2に持っているコードです:
import flash.display.MovieClip;
import flash.events.Event;
stop();
var keybaordLeft:int = 37;
var keyboardUp:int = 38;
var keyboardRight:int = 39;
var keyboardDown:int = 40;
var playerXSpeed:int = 4;
var playerYSpeed:int = 4;
var leftDown:Boolean = false;
var upDown:Boolean = false;
var rightDown:Boolean = false;
var downDown:Boolean = false;
optionsActive = false;
gamePaused = false;
startLevel();
function startLevel():void
{
if (optionsActive == false)
{
optionsUI.visible = false;
}
else
{
optionsUI.visible = true;
}
stage.addEventListener(MouseEvent.CLICK, activateMenuOptions);
mc_playerShip.addEventListener(Event.ENTER_FRAME, movePlayer);
stage.addEventListener(KeyboardEvent.KEY_DOWN, checkKeysDown);
stage.addEventListener(KeyboardEvent.KEY_UP, checkKeysUp);
}
function checkKeysDown(event:KeyboardEvent):void
{
if (event.keyCode == 37)
{
leftDown=true;
}
if (event.keyCode == 38)
{
upDown=true;
}
if (event.keyCode == 39)
{
rightDown=true;
}
if (event.keyCode == 40)
{
downDown=true;
}
}
function checkKeysUp(event:KeyboardEvent):void
{
if (event.keyCode == 37)
{
leftDown=false;
}
if (event.keyCode == 38)
{
upDown=false;
}
if (event.keyCode == 39)
{
rightDown=false;
}
if (event.keyCode == 40)
{
downDown=false;
}
}
function movePlayer(event:Event):void
{
if (leftDown)
{
mc_playerShip.x -= playerXSpeed;
}
if (upDown)
{
mc_playerShip.y -= playerYSpeed;
}
if (rightDown)
{
mc_playerShip.x += playerXSpeed;
}
if (downDown)
{
mc_playerShip.y += playerYSpeed;
}
}
と文字が全く動きません。なぜこれは、私はそれを修正することができますか?
あなたの 'mc_playerShip'はどこにありますか?実行後に何らかのエラーが発生しましたか?または任意の実行時エラー? –
これは画面上に表示されます。画面に表示されていないと何が間違っているのかわかりません。もちろん、2番目のフレームにのみ存在します。そして、いいえ、私は何の誤りもありませんでした。 – XirmiX
船の代わりにステージにエンターフレームのイベントリスナーを追加するとどうなりますか?それを修正するかどうかはわかりませんが、私はそれを船に追加する際のポイントを見ません。私はいつも私のステージに追加します。 –