2017-08-28 1 views
0

ではもはや機能していないフレームを飛び降りここで行うことになっているもののようだ:ボタンは、ActionScript 3.0

  1. スタートボタンとホーム画面で、再開ボタンがあります。
  2. フレームが進行すると、現在のフレームを保存してホーム画面に戻る「保存の進行状況&復帰」ボタンがあります。
  3. あなたは「再開」をクリックしたときに戻るホーム画面で、それはとても上など
  4. 。バック あなたがしていた前のフレームにあなたをもたらすと...。

私は1-3回しました。しかし、あなたが入っていた前のフレームに戻ると、ボタンはもう動作しないように見えます。同様に、あなたは進んでフレームを前方に動かすことはできません。

はここにスクリーンショットです: screenshot

次に、ここでは上記のアクションスクリプトの両方のためのコードです:

フレーム1:

stop(); 

start_btn.addEventListener(MouseEvent.CLICK, gotoIntro); 

function gotoIntro(event:MouseEvent):void 
{ 
    gotoAndStop('intro'); 
} 

resume_btn.addEventListener(MouseEvent.CLICK, gotoLastFrame); 

function gotoLastFrame(event:MouseEvent):void 
{ 
    gotoAndStop(lastFrame); 
    trace(currentFrame); 
} 

は、フレーム2:

var lastFrame:int = currentFrame; 

next_btn.addEventListener(MouseEvent.CLICK, gotoNext); 

function gotoNext(event:MouseEvent):void 
{ 
    nextFrame(); 
    lastFrame++; 
    trace("current frame: " + currentFrame + "; saved frame: " + lastFrame); 

} 

back_btn.addEventListener(MouseEvent.CLICK, gotoHome); 

function gotoHome(event:MouseEvent):void 
{ 
    gotoAndStop('home'); 
    trace(lastFrame); 
} 

これは将来のシンプルな視覚小説のためのものです将来的に作るのが好きです。しかし、笑私はすでにここでハハハハハにはまっている。誰かがフレームを再び前方へ移動する方法を助けることができますか?どうもありがとうございます!

答えて

1

問題はあなたのフレームです。フレームは常に管理しにくいです。フレーム2に行くと、イベントリスナーが[次へ]ボタンに追加されます。その後、フレーム3に移動し、フレーム1に移動すると、ステージからボタンが削除されます。その後、フレーム3に戻ると、新しい「次へ」ボタンがステージに追加されますが、追加されたフレーム2をスキップしたため、イベントリスナーはありません。

簡単な解決策は、新しいフレームをコードと共に自分のムービークリップに移動し、インスタンス名として「myNovel」と呼ぶことです。開始画面を別のムービークリップに移動し、「myStartScreen」と呼んでください。どちらもフレーム1のステージにありますが、あなたの小説は見えません。実際には、メインタイムラインに1つのフレームしか必要ありません。

開始または次をクリックすると、開始画面が非表示になり、あなたの小説が表示されます。フレームを覚えておく必要はありません。なぜなら、それはあなたが残したフレームにとどまるからです。

メインタイムラインコード:

// make novel invisible at the beginning 
myNovel.visible = false; 

function gotoHome():void 
{ 
    // the novel will stay in the current frame 
    myStartScreen.visible = true; 
    myNovel.visible = false; 
} 

// startFromTheBeginning is an optional parameter 
function gotoNovel(startFromTheBeginning:Boolean = false):void 
{ 
    // the novel will stay in the current frame 
    myStartScreen.visible = false; 
    myNovel.visible = true; 

    if(startFromTheBeginning) 
    { 
     myNovel.gotoAndStop(1); 
    } 
} 

スタート画面コード:

start_btn.addEventListener(MouseEvent.CLICK, gotoIntro); 

function gotoIntro(event:MouseEvent):void 
{ 
    // parent is the parent moveiclip (your main timeline with the code above) 
    parent.gotoNovel(true); // start from the beginning 
} 

resume_btn.addEventListener(MouseEvent.CLICK, gotoLastFrame); 

function gotoLastFrame(event:MouseEvent):void 
{ 
    parent.gotoNovel(); // this will make the novel visible that are in the frame that the user left 
} 

小説コード

next_btn.addEventListener(MouseEvent.CLICK, gotoNext); 

function gotoNext(event:MouseEvent):void 
{ 
    nextFrame(); 
} 

back_btn.addEventListener(MouseEvent.CLICK, gotoHome); 

function gotoHome(event:MouseEvent):void 
{ 
    parent.gotoHome(); 
} 
+0

すごい迫力私は開始との両方を入れて、それは良いアイデアだと思います2つの異なるムービークリップで斬新。私はそれについても考えていませんでした:Dありがとう!しかし、この場合、どのようにしてスタート画面に戻ることができるのでしょうか?そして、開始画面で「レジュームボタン」を押すと、私が入っていた最後のフレームに戻りますか? –

+0

私のコメントを読んでください - "スタート画面のコード"は、ムービークリップのムービークリップと "新しいコード"に入れてください。そのコードはメインタイムラインの関数を呼び出しています – Philarmon