이 간단한 예제 을 만들었습니다. 더 복잡한 클래스 인 Main 클래스의 모든 설정을 초기화하고 필요할 때 Game 클래스에 추가 (및 업데이트)하려는 메뉴 항목을 사용했기 때문에 클래스는표시 목록에 (addChild)를 추가하려면 한 클래스의 초기화 된 객체 참조를 다른 클래스로 전달하려면 어떻게합니까?
) 분리 된 클래스 : 홈페이지 (문서 클래스입니다 (이상적으로) 모든 것이 초기화된다/생성)
public class Main extends MovieClip
{
//testing passing on reference to Game
private var testBitmap:Bitmap;
private var testBitmapData:BitmapData;
private var testArray:Array;
public function Main():void
{
testBitmapData = new BitmapData(256, 256, false, 0xCCDDEE);
testBitmap = new Bitmap(testBitmapData);
testArray = [];
testArray.push(testBitmap); //Array for reference
game = new Game(540, 960, testArray);
//create Game class, pass reference to Object
game.x = 0;
game.y = 0;
}
}
클래스 : 게임 (문서 클래스에 의해 생성된다 (이상적으로) 모든 실행하는 경우)
public class Game extends MovieClip
{
private var testingArray:Array
public function Game(gameWidth:int, gameHeight:int, testArray:Array):void
{
this.testingArray = testArray; //assign to local Array and access
addChild(testingArray[0]);
//addChild to Game from an item intialised in Main, doesn't work >___<
}
}
.
.
.
것은 나의 원래 게임 종류에서이다;
public function Game(gameWidth:int, gameHeight:int, cachedBitmapClipArray:Array)
{
this.cachedBitmapClipArray = cachedBitmapClipArray;
private function update():void
{
for each (tempCachedBitmapClip in cachedBitmapClipArray)
{
tempCachedBitmapClip.updateCurrentTile();
//but updating through the reference to an item initialised in Main works !!
}
}
}
: 그것은 캐시의 BitmapData의 초기 번들 이미 홈페이지에 addedChild 경우가) ( 여기 컷 다운 (만 작품을 업데이트하기위한 해당 참조를 순환 필요의 BitmapData을 알려주는 목록의 배열을 받아
.
는 어떻게 (
크로스 '범위'를 할 수있는 객체 즉, (하는 AddChild 할 수있는)? 원래 인스턴스로 행동 기준을 만들고 객체에 전달 (또는에 액세스) 할 ??) 또는 객체가 초기화 된 클래스에서만 제어 (인스턴스화)되어야하는지 여부
감사합니다. (!!) 매개 변수를 전달하면 (동작) 값 또는 참조가 전송되었는지 여부에 따라 차별화 될 수 있음을 알게되었습니다. 지금까지 참조 방법을 생각해 보았습니다 ((예 : properites/변수를 설정하는 방법/함수) 나는 모든 전달 된 개체 (특히 자신의 클래스) 실제로 복제 된 실제 값 자체 (!!) 내 경우에 문제가 is'addChild (testingArray [0]); line testingArray가 Main에서 Bitmap에 대한 참조 만 포함하기 때문에 가정합니다. Game 클래스에서 실제로 addChild를 수행 할 수 없습니다. 아무 것도 표시 목록에 추가됩니다. – bikutaa
다른 곳에서 나타나지 않는 한 내가 볼 수 없습니다 .. addChild (testBitmap); .. 하지만 게임 클래스에서 'testArray [0]'은 '[object Bitmap]'으로 추적됩니다. (이제 이건 그냥 참조하는 것입니다.) 기본적으로 나는 거대한 클래스 패키지에있는 모든 것 대신에 별도의 클래스로 물건을 나누고 싶다. (오 yeh : void는 거기에 의미가 없기 때문에 내가 왜 추가했는지 모르겠다 !!) – bikutaa
@bikutaa 내 대답을 편집했습니다. 나는 몇 가지 시도를 해 주셔서 감사합니다. 좀 더 많은 정보를 되돌려 보냅니다. 당신이 확인한 것은 객체가 통과되고 있다는 것입니다. 객체의 메모리 주소 및/또는 UID 값을 살펴 보는 것이 동일한 객체인지를 실제로 확인하는 유일한 방법입니다. – shaunhusain