저는 영어 원어민이 아니지만 가능한 한 명확하고 이해하기 쉽도록 최선을 다할 것입니다.ObjectContainer를 통해 객체의 메서드에 액세스 할 수없는 이유는 무엇입니까?
내 프로그래밍 클래스에서, 애니메이션 (cc) (플래시)을 사용하여 타일 기반 게임 (예 : zelda)을 만들어야합니다. 지도에서 음악의 리듬에 따라 바뀌는 타일로 댄스 플로어를 만들고 싶습니다. 이 타일은 두 개의 프레임, 하나의 흰색과 하나의 빨간색으로 무비 클립입니다.
private function createGrid(): void {
grid = new MovieClip();
addChild(grid);
for (var r: int = 0; r < nbRow; r++) {
for (var c: int = 0; c < nbCol; c++) {
var t: Tiles = new Tiles();
t.x = t.width * c;
t.y = t.height * r;
grid.addChild(t);
}
}
grid.x = 15; //center the grid on x
grid.y = 35; //center the grid on y
}
이것은 타일 클래스입니다 :
이
은 타일을 생성하는 방법이다package {
import flash.display.MovieClip;
import flash.events.*;
public class Tiles extends MovieClip {
private var rand:int;
public function Tiles() {
// constructor code
getTiles();
}
public function getTiles():void {
random();
setColor();
}
private function random() : void{
rand = Math.floor(Math.random()*100)+1;
}
private function setColor() : void{
if(rand<=30){
gotoAndStop(8); //red frame
}else{
gotoAndStop(7); //white frame
}
}
}
}
createGrid()지도가 게재되는 즉시 타일을 배치 무비 클립에있는 모든 타일을 무대에 저장하고 격자. 지금, 나는 타일이 스트리밍 음악의 비트에 빨간색과 흰색 사이에 무작위로 변경 (그리고 30 % 빨간 타일의 비율이 70 % 흰색 타일 유지) 나는 내가 leftpeek 속성을 필요로 알고
var s: Sound = new Sound();
var sc: SoundChannel;
s.load(new URLRequest("GameSong_mixdown.mp3"));
sc = s.play(0, 1000);
을 할 지금, 그 달성하지만 내의 SoundChannel, 나는이 기능을 트리거 버튼으로 내 테스트를 수행합니다
private function setTiles(e: Event): void {
// loop through all child element of a movieclip
for (var i: int = 0; i < grid.numChildren; i++) {
grid.getChildAt(i).getTiles();
}
}
을 지금 문제는 다음과 같습니다 내 타일 방법을 액세서 드릴 수 없습니다. 그리드에서 getChildAt (i) 추적을 수행하고 콘솔의 모든 타일을 보았습니다. 그래서, 나는 모든 타일이 그리드에 저장된다는 것을 알고 있습니다. 하지만, 왜 그런지 모르겠다. grid.getChildAt (i) .getTiles(); 작동하지 않습니다 (및 타일의 모든 다른 방법). 오류 메시지 : 정적 유형이 flash.display 인 참조를 통해 가능한 u 정의 된 메서드 getTiles를 호출합니다. DisplayObject
누군가 내가 뭘 잘못하고 있는지 알고 있습니까?
PS : 나는 코드를 명확하게하는 프랑스어에서 영어에 내 모든 클래스 이름, VAR 이름 등을 번역했다.
고마워 :
는 당신이 필요로하는이 객체가 타일의 사실 클래스 프로그램을 알리는 것입니다! 이제 효과가있다. –