林新動作,我一直在嘗試創建一個sidescrolling遊戲。一切都很順利,直到我意識到我需要一個功能遊戲。問題是我有許多movieclip對象與我自己的實例名稱,我從我的文檔類訪問。as3麻煩操縱文檔類以外的對象
但是,現在我有一個新的文檔類,它啓動我的舊文檔類以啓動遊戲,並在屏幕上啓動遊戲,因此我可以重置遊戲。除了現在我得到了所有50個實例對象的未定義屬性的錯誤訪問(填空)。
所以我的問題是如何讓Flash識別並允許我的非文檔類,類來操縱這些影片剪輯實例。
我創建了一個小規模的例子來說明我試圖做什麼。
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Stage;
public class Test extends MovieClip {
public static var gstage:Stage;
public function Test() {
// constructor code
var playScreen:Go = new Go();
addChild(playScreen);
}
}
}
以上是我的文檔類「MoveMe的是實例
其他類這將是我的舊文檔類的名稱
package {
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
import Test;
public class Go extends MovieClip {
public var test:Test;
public function Go()
{
if (stage)
{
init();
}
else
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
}
private function init(e:Event = null):void
{
if (e) removeEventListener(Event.ADDED_TO_STAGE, init);
trace(stage.width);
addEventListener(Event.ENTER_FRAME, loop);
}
public function loop(e:Event, Test):void
{
Test.moveme.scaleX++
Test.moveme.x++
}
}
}
我這一個得到的錯誤是錯誤#1063:參數計數不匹配Go/loop()。期望2,得到1.
或者如果我刪除在公共職能循環測試(e:事件,測試):void我得到相同呃像以前一樣。我已經嘗試了很多東西,我可以通過它來追蹤我無法控制實例的階段寬度。
任何幫助,將不勝感激!
現在,如果我嘗試 公共職能環路(E:事件= NULL,testObj:測試= NULL):無效 \t \t { \t \t \t testObj.moveme.scaleX ++ \t \t} 我得到的錯誤類型錯誤:錯誤#1009:無法訪問空對象引用的屬性或方法。在Go/loop()[C:\ Users \ name \ Desktop \ games \ game3 \ Go.as:31] 行31是testObj.moveme.scaleX ++。我也使用test.moveme.scaleX ++和testObj部分從函數中取出同樣的錯誤。 – Andrew
就像我說的:當事件Event.ENTER_FRAME觸發並調用循環時,它只會將「one」參數(事件本身)傳遞給函數「loop」。因此,testObj爲空,無法訪問。您可能希望將testObj聲明爲類變量並將其分配給init函數。 public class Go擴展MovieClip {private var testObj:Test;私人函數init(e:Event = null):void {testObj = new Test(); [...]公共函數循環(e:Event = null):void {testObj.moveme.scaleX ++} – Jan