2013-12-10 28 views
1

我試圖製作一個炸彈捕捉遊戲(我實際上是使用AS3教室中的代碼來編寫一本書的代碼)。只要我改變水果這個詞在代碼中炸彈,我得到了1007錯誤。除了將basket_mc更改爲eod_mc和水果炸彈(我使用了命令F並換成了區分大小寫),我沒有太大的改變。它與eod_mc一起工作,但不與炸彈。在非構造函數上嘗試實例化

var bombArray:Array = new Array(bomb); 
var bombsOnstage:Array = new Array(); 
var bombsCollected:int = 0; 
var bombsLost:int = 0; 
for (var i:int = 0; i<20; i++) { 
var pickBomb = bombArray[int(Math.random() * bombArray.length)]; 
var bomb:MovieClip = new pickBomb(); 
addChild(bomb); 
bomb.x = Math.random() * stage.stageWidth-bomb.width;// bomb.width is subtracted from the random x position to elimate the slight possibility that a clip will be placed offstage on the right. 
bomb.y = Math.random() * -500; 
bomb.speed = Math.random() * 15 + 5; 
bombsOnstage.push(bomb); 
} 
eod_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragEod); 
stage.addEventListener(MouseEvent.MOUSE_UP, dragStop); 
function dragEod(e:Event):void { 
eod_mc.startDrag(); 
} 
function dragStop(e:Event):void { 
eod_mc.stopDrag(); 
} 
stage.addEventListener(Event.ENTER_FRAME, catchBomb); 
function catchBomb(e:Event):void { 
for (var i:int = bombsOnstage.length-1; i > -1; i--) { 
    var currentBomb:MovieClip = bombsOnstage[i]; 
    currentBomb.y += currentBomb.speed; 
    if (currentBomb.y > stage.stageHeight - currentBomb.height) { 
     currentBomb.y = 0 - currentBomb.height; 
     bombsLost++; 
     field2_txt.text = "Total Bombs Detonated: " + bombsLost; 
    } 
    if (currentBomb.hitTestObject(eod_mc)) { 
     bombsCollected++; 
     removeChild(currentBomb); 
     bombsOnstage.splice(i,1); 
     field1_txt.text = "Total Bombs Caught: " + bombsCollected; 
     if (bombsCollected >= 20) { 
      eod_mc.gotoAndStop(20); 
     } else if (bombsCollected > 15) { 
      eod_mc.gotoAndStop(15); 
     } else if (bombsCollected>10) { 
      eod_mc.gotoAndStop(10); 
     } else if (bombsCollected>5) { 
      eod_mc.gotoAndStop(5); 
     } 
    } 
} 
    if (bombsOnstage.length <= 0) { 
    field1_txt.text = "You Win! You have defused the bombs."; 
    field2_txt.text = ""; 
    stage.removeEventListener(Event.ENTER_FRAME, catchBomb); 
} 
if (bombsLost >= 20) { 
    field1_txt.text = "Sorry you lose. You have lost your foot!"; 
    field2_txt.text = ""; 
    stage.removeEventListener(Event.ENTER_FRAME, catchBomb); 
    for (var j:int = bombsOnstage.length-1; j > -1; j--) { 
     currentBomb = bombsOnstage[j]; 
     removeChild(currentBomb); 
     bombsOnstage.splice(j,1); 
    } 
} 

} 
+0

你其實應該花一些時間來學習這個東西實際上做,而不是隻是一味地從書本複印... – Sinkingpoint

+0

嗯考慮,我最終是本週到期,我們有一個替代的教學陣列和哦,是的,他們的鞋有角這堂課進入七週。這恰好是我自己無法弄清楚的唯一事情。我希望得到一些幫助。 – DollahBill

+0

你有沒有叫'pickBomb'的課?你正試圖創建一個實例(它調用它的*構造函數*)我懷疑這是你的錯誤來自哪裏。 – Sinkingpoint

回答

0

可能避免使你的編程生活更扭曲比現在...

有編程對象和類,一類一組對象的描述,說「表「(或者,因爲類和變量的名稱最好不同,」表「,首字母大寫)是一個類的名稱。 實例對象是屬於一個或多個類別的結構,其中Object是最頂層的,因爲編程中的所有內容都是對象或「簡單變量」,即數字,真/假,一串字符(這些也是AS3中的對象類型,儘管如此,Number,Boolean,String,但這些通常不需要通過new實例化)或者可能是其他一些我現在不記得的簡單類型。

類有屬性方法。屬性是可以從類的任何對象請求的東西,比如表格的「高度」。屬性可以是任何類型的,包括嵌套對象,取決於你的基類是什麼。在AS3中說stage是任何DisplayObject的屬性,用於在運行時獲取唯一的Stage對象[1]。方法是一個類的任何對象都可以被告知要做的事情。比方說,炸彈落下,爆炸,MovieClip s可以告訴stop()等。你寫類代碼要記住,這個類的所有對象必須像你寫的一樣行爲,但是因爲它們可以在屬性上有所不同,你可以給他們有條件的行爲。例如,如果炸彈已經爆炸,它不會再炸燬。

A 變量,無論屬性還是獨立變量(如果在函數中聲明一個變量)都是對給定類型對象的引用。說var i:int是指某種整數。簡單類型變量是容器,即i=2;將在引用的整數中放置2,i=j;將從j中將值複製到i,而var theStage:Stage=this.stage將改爲創建對現有對象的引用,並且如果該對象將更改,該引用將爲您提供更改的對象,而不是其先前的狀態。一個數組是變量的集合,可以通過索引訪問,在AS3中,它們不必是一種類型,而Vector是一個類型化數組。

接下來,對象的生命週期。一個對象只在有活動引用時才存在,無論是在另一個活動對象的屬性中,還是在可見變量中,或者在事件偵聽器(特定於AS3)中。一個對象是通過new ClassName(<parameters>)創建的,當你以某種方式到達它時就會生存,並且一旦沒有活動鏈接並且Flash Player決定運行垃圾收集器就會被銷燬。在此之前,程序員必須自己釋放對象,可以在BitmapData.dispose()處看到雛形。因此,爲了避免Flash播放器耗盡可用內存,請全權控制鏈接的創建和銷燬。你不需要關心簡單的變量,他們正在被Flash播放器照顧。

一種互動很多的基本功能已經在AS3中實現,尋找他們和他們Adobe's manual是如何工作的例子,通過左下角的包瀏覽,大多數的交互式的東西是flash.display包,請參閱其他包裝是必要的。

希望這會帶給你一些洞察到編程基礎。

[1]:有一個階段,除非你正在做一個SWF的負荷,那麼可能會有更多,每一個SWF一個舞臺。

+0

謝謝。課程名稱是Flash,我沒有意識到(直到課程的第一個晚上)纔有了編程邏輯的預先需求。我的顧問向我詢問了這個課程,顯然她也把它放在了預備課程上。這甚至不是我學位的一部分,我將參加圖形/網頁設計,這是遊戲設計學位的一部分。因此,FML參加我不需要的課程並且沒有做好準備。直到我還在練習這個小呃逆時,教練才意識到我在八球后面,並且得到了巨大的幫助。感謝您在基礎編程知識方面的額外努力。 – DollahBill

+0

請看,編程邏輯不僅僅是獲得學位,還需要它在日常生活中的應用,只是更仔細地觀察。是的,即使你做了最好的設計,它也不會自己開始遊戲,你需要邏輯來動畫它,至少它的基礎知識。 – Vesper

相關問題