2016-11-10 13 views
1

私は現在、ゲームに取り掛かっています。私は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; 
    } 
} 

と文字が全く動きません。なぜこれは、私はそれを修正することができますか?

+0

あなたの 'mc_playerShip'はどこにありますか?実行後に何らかのエラーが発生しましたか?または任意の実行時エラー? –

+0

これは画面上に表示されます。画面に表示されていないと何が間違っているのかわかりません。もちろん、2番目のフレームにのみ存在します。そして、いいえ、私は何の誤りもありませんでした。 – XirmiX

+0

船の代わりにステージにエンターフレームのイベントリスナーを追加するとどうなりますか?それを修正するかどうかはわかりませんが、私はそれを船に追加する際のポイントを見ません。私はいつも私のステージに追加します。 –

答えて

0

これはあなたの質問に対する回答ではありませんが、依然として役立つ場合があります。あなたは、単にuiElementsと呼ばれる1つの親コンテナにすべてのこれらのボタンやムービークリップを置けば

If (this.currentFrame == 1){ 
    if (uiElements.visible != false){ 
     uiElements.visible = false; 
    } 
} 

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; 
     } 
    } 

は、このすべてに置き換えることができます。

編集11-12-16

は、最初に任意の関数の外にこれを行うコンテナを作成するには必ずflash.display.*

をインポートします:

var uiElements:Sprite = new Sprite(); // this creates an instance of the Sprite class 

(スプライトは同じですムービークリップはありませんが、独自のタイムラインはありませんので、メモリが少なくて済みます)

あなたのメインコンストラuctorの操作を行います。その後

addChild(uiElements); // this adds the Sprite to the stage 

、あなたはあなたがそのコンテナに追加したい要素を作成どこ:

uiElements.addChild(yourNewMcHere); //this adds your other movie clip to the container 

ん意味をなさない?

これはプログラムによる方法です。 IDEで要素を作成する場合は、単に空のMovieClipを作成し、他のすべてのムービーの唇を追加するだけです(MovieClip、Ctrl + Xを選択してカットする、使用するムービークリップをダブルクリックするなど)コンテナとしてctrl + vを貼り付け、このコンテナに追加するすべてのムービークリップを繰り返します。これはプログラムで行うように示したものと同じです)。

+0

ああ、冷たい。ええ、それは私の問題を解決することはできませんが、確かにコードをより一貫して保つのに役立ちます。とにかく少し変更しました。実際には必要な小切手はありませんでした。 – XirmiX

+0

ムービークリップを作成するにはどうすればできますか?ムービークリップにムービークリップを追加するにはどうすればよいですか?申し訳ありませんが、私はフラッシュに新しいです...私は大学で配列を教えていませんでした。 – XirmiX

+0

@XirmiX私の投稿の一番下の私の編集を参照してください –

関連する問題