我目前正在嘗試基於過去幾個月一直在努力的幾個教程製作交互式故事書,但在繼續擴展項目之前,有幾個教程我想改變和簡化的事情。以下是原始教程的簡化版本,之後是我目前正在進行修改的地方。簡化從陣列中添加/刪除子視頻片段
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Main_Test extends MovieClip
{
var startPage:StartPage;
var hillPage:HillPage;
var pondPage:PondPage;
public function Main_Test()
{
startPage = new StartPage;
hillPage = new HillPage;
pondPage = new PondPage;
addChild(startPage);
// add event listeners
startPage.hillButton.addEventListener(MouseEvent.CLICK, onHillButtonClick);
startPage.pondButton.addEventListener(MouseEvent.CLICK, onPondButtonClick);
hillPage.backToStartButton.addEventListener(MouseEvent.CLICK, onBackButtonClick_Hill);
pondPage.backToStartButton.addEventListener(MouseEvent.CLICK, onBackButtonClick_Pond);
}
// event handlers
function onHillButtonClick(event:MouseEvent):void
{
addChild(hillPage);
removeChild(startPage);
}
function onPondButtonClick(event:MouseEvent):void
{
addChild(pondPage);
removeChild(startPage);
}
function onBackButtonClick_Hill(event:MouseEvent):void
{
addChild(startPage);
removeChild(hillPage);
}
function onBackButtonClick_Pond(event:MouseEvent):void
{
addChild(startPage);
removeChild(pondPage);
}
}
}
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Main_Test_2 extends MovieClip
{
var pages:Array = ["startPage", "hillPage", "pondPage"];
public function Main_Test_2()
{
pages[0] = new StartPage;
pages[1] = new HillPage;
pages[2] = new PondPage;
addChild(pages[0]);
/*trace (pages[0]);*/
// add event listeners
pages[0].hillButton.addEventListener(MouseEvent.CLICK, hillButtonClick);
pages[0].pondButton.addEventListener(MouseEvent.CLICK, pondButtonClick);
pages[1].homeButton.addEventListener(MouseEvent.CLICK, homeButtonClick);
pages[2].homeButton.addEventListener(MouseEvent.CLICK, homeButtonClick);
}
function hillButtonClick(event:MouseEvent):void
{
trace ("You did a thing.");
addChild(pages[1]);
removeChild(pages[0]);
}
function pondButtonClick(event:MouseEvent):void
{
trace ("Slimy frogs are slimy.");
addChild(pages[2]);
removeChild(pages[0]);
}
function homeButtonClick(event:MouseEvent):void
{
/*addChild(pages[0]); */
if (pages[1])
{
trace ("All your base are belong to me.");
/*removeChild(pages[1]);*/
}
if (pages[2])
{
trace ("You are who you choose to be.");
/*removeChild(pages[2]);*/
}
}
}
}
我做的第一件事就是從每一頁到一個數組中單個變量開關。當我製作了一個9頁的3x3版互動故事書時,代碼失控了,並且真的是重複的,所以我認爲這個數組會縮短事情的發展時間,但這使我想到了第二件事,即使在切換到數組之前也沒有辦法。在本教程中,MovieClip中的每個按鈕都會使用addChild添加下一個頁面,並使用removeChild刪除當前頁面,但這些按鈕已設置爲可以根據點擊時所處的頁面執行不同的操作,這會導致多個onBackButtonClick結果,例如。隨着頁面數量的增加,這成爲一個問題。我寧願讓每個按鈕都添加與該按鈕相對應的頁面,同時刪除所有其他頁面,因此我不需要具有多個冗餘按鈕,如onBackButtonClick_hill和onBackButtonClick_pond。我試着用第二批代碼自己設置它,但是我無法正常工作。我也在考慮製作一些變量,包括var currentPage,var allPages和var allOtherPages(currentPage - allPages),所以我可以告訴按鈕做一些事情,比如添加當前頁面並刪除所有其他頁面,但我不知道如何在舞臺上將當前的動畫片段稱爲當前頁面,等等。我在編程方面仍然太新了。
任何有關這些問題和建議的幫助將不勝感激。
我在一兩天內攻擊了這段代碼,最終發現了它。感謝大家的幫助。 – crabdog62482