まず、ネイティブの英語のスピーカーではありませんが、わかりやすく理解できるように努力します。ObjectContainerを介してオブジェクトのメソッドにアクセスできないのはなぜですか?
私のプログラミングクラスでは、アニメーションcc(フラッシュ)でタイルベースのゲーム(exelpleのように)を作る必要があります。マップ上では、音楽のリズムに変化するタイルでダンスフロアを作りたいです。これらのタイルは、2つのフレーム、1つの白と1つの赤のムービークリップです。
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()マップが配置されるとすぐにタイルを配置ムービークリップのタイルごとにステージと在庫にグリッド。今、私はleftpeekの特性を必要と知っている
var s: Sound = new Sound();
var sc: SoundChannel;
s.load(new URLRequest("GameSong_mixdown.mp3"));
sc = s.play(0, 1000);
タイルがストリーミング音楽のビートに赤と白の間でランダムに変化(30%赤瓦の割合が70%白のタイルを維持)したいですそれを達成するために私の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();動作しません(およびTilesの他のすべてのメソッド)。エラーメッセージ:静的型flash.displayの参照を使用して、おそらくudefinedメソッドgetTilesを呼び出します。
誰かが間違っていることを知っていますか?
PS:私は、コードをより明確にするために、フランス語から 英語にすべての私のクラス名、VAR名などを翻訳しました。
おかげでたくさん!今それは働く –