2015-01-08 89 views
0

我最近開始使用動作腳本3爲學校項目編寫遊戲。現在看了一些教程後,我想把劇本和海誓山盟結合起來,以獲得我想要的遊戲。錯誤#1034:類型強制失敗:無法將對象:: Player @ a1a4101轉換爲flash.display.MovieClip

現在出現的問題是需要轉換動畫片段,但閃光燈無法轉換。爲什麼必須轉換:我沒有線索。正如我之前所說,我是一個絕對的初學者。

我已經搜索了網頁和這個網站,但沒有什麼似乎是相同的,所以我不知道如何解決它。

Flash Builder中提供了以下錯誤:

TypeError: Error #1034: Type Coercion failed: cannot convert objects::[email protected] to flash.display.MovieClip. 
at screens::inGame/checkStuff()[C:\Users\Henk-Jan\Dropbox\Project P2 CMD 1\4. Multimedia production\Tutorials\StarlingProject\src\screens\inGame.as:294] 

inGame.as行294:

for(var i:int = 0; i < blocks.length; i++) 
     { 
      blocks[i].checkObj(char, i); //LINE 294************************* 
      for(var s:int = 0; s < enemies.length; s++) 
       blocks[i].checkObj(enemies[s], i); 
     } 

checkObj功能Block.as:

public function checkObj(obj:MovieClip, place:int):void{ 
     if(obj.x + obj.width/2 > x - width/2 && obj.x < x - width/2 + 7 && Math.abs(obj.y - y) < height /2){ 
      obj.x = x - width/2 - obj.width/2; 
     } 
     if(obj.x - obj.width/2 < x + width/2 && obj.x > x + width/2 - 7 && Math.abs(obj.y - y) < height /2){ 
      obj.x = x + width/2 + obj.width/2; 
     } 
     if(Math.abs(obj.x - x) < width/2 + obj.width/2 && obj.y < y - height/2 && obj.floor > y - height/2 && obj.onBlock != place){ 
      obj.floor = y - height/2; 
      obj.onBlock = place; 
     } 
     if(Math.abs(obj.x - x) >= width/2 + obj.width/2 && obj.onBlock == place){ 
      obj.onBlock = -1; 
      obj.floor = 600; 
     } 
     if(obj.y - obj.height/2 < y + height/2 && obj.y > y && Math.abs(obj.x - x) < width/2 + obj.width/2){ 
      obj.y = y + height/2 + obj.height/2; 
     } 

左右,這是建在Starling框架中。上面的代碼是我不會在這裏發佈的較大代碼的一部分,因爲你們可能不會那樣。 var blocks是一個數組,其中有char塊代表遊戲中的塊。

對於誰願意導入整個代碼到Flash Builder>http://www75.zippyshare.com/v/37202056/file.html

我希望我的問題可以很快解決,我的截止日期是下週已經...

問候的傢伙,

亨克 - 揚

回答

0

的問題是不是你需要轉換一個影片剪輯,問題是,你要強迫一個Player類爲MovieClip類(它不是)。 checkObj()有第一個參數obj:MovieClip。這是問題。請將其更改爲obj:Player或將其推廣爲通配符obj:*

+0

儘管每個人都會幫忙,並且不要使用通配符。 – BadFeelingAboutThis

+0

謝謝!通配符起作用。 多個對象正在經歷這個功能,那麼你會建議LDMS?當我設置「播放器」而不是*時,它修復了播放器錯誤,但「敵人」對象也使用該功能。 – Henkert

+0

我假設你的玩家和敵人類是從雪碧延伸?如果是這樣,(IIRC)你應該可以使用'obj:Sprite'並且它應該可以工作,因爲玩家和敵人都是衍生物。請注意,除非你解析'myPlayer:Player = obj作爲Player'或'myEnemy:Enemy = obj作爲Enemy',否則引用你的子類的類特定屬性將不起作用。 – Atriace

相關問題