私は、ステージ上に常に少なくともいくつかのコンポーネント(ユーザー入力のための説明とテキスト入力用のテキスト領域)を持つテキストアドベンチャーゲームに取り組んでいます。したがって、私はFlashのWYSIWYG設計環境を通してこれらのコンポーネントを静的に作成しました。私はそれぞれインスタンス名 "myTA"と "myTI"を与えました。メインクラス(ステージのドキュメントクラス)がそれらとやり取りすることができました(実行時にタイプライターのように一度に1文字ずつテキストを動的に追加します)が、同じパッケージ内の他のクラスは認識できないようですステージコンポーネント。すべてがメインクラス内で発生した非ドキュメントクラスのクラスをFlash AS3のステージコンポーネントに「認識」させるにはどうすればよいですか?
ケースA、::メインはタイプライター印刷を処理するために、第2のクラスのタイプライター "を呼び出し
package {
public class Main extends MovieClip {
public var myTA:TextArea;
var displayedChar:String = new String();
var textToWrite:String = new String();
var i:int = 0; var intervalId:uint;
var done:int = 0;
public function Main {
setUpTA();
}
public function setUpTA(){
myTA.text = "" + playAtInterval("Hello Player!");
}
public function writeCharsSlowly(){
textToWrite = arguments[0];
displayedChar=textToWrite.substring(i,i+1);
myTA.appendText(displayedChar);
i++;
if (i == textToWrite.length) {
done = 1;
clearInterval(intervalId);
}
}
public function playAtInterval(theText:String) {
i = 0;
intervalId = setInterval(writeCharsSlowly, 100, theText);
}
}
}
ケースB:
以下は、関連するコードですメイン:
package {
public class Main extends MovieClip {
public var myTA:TextArea;
public var myTI:TextInput;
var str:String = new String();
public function Main{
testTypeWriter();
}
public function testTypeWriter(){
typeW.playAtInterval("Hello Player");
typeW.addEventListener(MouseEvent.CLICK,testTypeWriter2);
typeW.addEventListener(KeyboardEvent.KEY_DOWN,inputEngine2)
addChild(typeW);
}
public function testTypeWriter2(event:MouseEvent){
if (myTI.text == "a") {
typeW.playAtInterval("yo");
} else {
typeW.playAtInterval("Greetings, I am a test...");
}
addChild(typeW);
}
public function inputEngine2(event:KeyboardEvent){
str = String.fromCharCode(event.charCode);
myTI.appendText(str);
}
タイプライター:
package {
public class TypeWriter extends MovieClip {
public var myTI:TextInput;
public var myTA:TextArea;
var i:int = 0;
var done:int = 0;
var intervalId:uint;
var displayedChar:String = new String();
var textToWrite:String = new String();
public function TypeWriter(){
///nothing here
}
public function writeCharsSlowly(){
textToWrite = arguments[0];
displayedChar = textToWrite.substring(i,i+1);
myTA.appendText(displayedChar);
i++;
if (i == textToWrite.length) {
done = 1;
clearInterval(intervalId);
}
}
public function playAtInterval(theText:String) {
i = 0;
intervalId = setInterval(writeCharsSlowly, 100, theText);
}
}
}
ケースAが動作しますが、B Flashが "エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません"というエラーが表示され、myTAで操作しようとしているTypeWriterの最初の行に注意します問題。
既存のステージコンポーネントを「認識」しているドキュメントクラス以外に他のクラスを作成するにはどうすればよいですか?
おかげで、
CCJ