1

良い友達が私にこのサイトを勧めてくれました、それは本当に便利に見えます!私はactionscriptで少し恥知らずな初心者であり、3日間のチュートリアルとアドバイスの後、レンガの壁にぶつかりました。

AS3glueと呼ばれるものを使用して、フラッシュと通信するarduinoにセンサーを接続することができました。それは機能します。センサーが0を読み取るという条件に対してtrace( "leaf")を設定すると、"leaf"という単語のプリントアウトが表示されます。ただし、何かをトレースするだけでなく、この条件が満たされたときにプログラムで画面にグラフィックを表示させたいと思います。

条件が満たされるたびに、画面上のランダムな位置に「Enemy」というライブラリオブジェクトを生成するようにプログラムを取得しようとしています。私がゲームのチュートリアルに従っているので、それは敵と呼ばれています...実際にはそれは葉の絵です。

これが私に問題を引き起こしているコードのビットです:

var army:Array; varenemy:敵;
関数AvoiderGame(){army = new Array(); var newEnemy = new Enemy(100、100); army.push(newEnemy); addChild(newEnemy); }

関数timerEvent(event:Event):void {

if(a.getAnalogData(0)== 0 && a.getAnalogData(0)!= this.lastposition){

          trace("leaf");
          var randomX:Number = (Math.random() * 200) + 100;
          var randomY:Number = (Math.random() * 150) + 50;
          var newEnemy = new Enemy( randomX, randomY);
          army.push( newEnemy );
          addChild( newEnemy );
       } else if (a.getAnalogData(0) == 0) {   //don't trace anything } >else {

//何もトレースしない}this.lastposition= a.getAnalogData(0); //その後、位置を新しい最後の位置に設定して繰り返します。

}

「importflash.display.MovieClip;」をインポートしました

Enemyクラスのコードは次のようになります。

パッケージ{importflash.display.MovieClip; public class Enemy extends MovieClip {public function Enemy(startX:Number、startY:Number){x = startX; y = startY; }}}

これが私のエラーです。私はグーグルを試しました、それはかなり一般的なエラーのようです:

TypeError:エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。as3glue_program_fla :: MainTimeline / timerEvent()at flash.utils :: Timer / _timerDispatch()at flash.utils :: Timer / tick()

「Enemy」オブジェクトがAS3にエクスポートされていることを確認しました。

AS2でプログラムされている場合は、次のようなものを使用します。

leafCounter = 0; //カウンターを0に設定counter.swapDepths(1000); // 1000枚以上の葉を作らない限り、ほとんど何でも上にカウンターを置きます!counter.textbox.text = 0; //「カウンター」ムービークリップのテキストボックスに「0」を表示します

this.onMouseDown = function(){//マウスがクリックされるとトリガーthis.attachMovie( "Leaf"、 "Leaf" + leafCounter、leafCounter、{_ x:Math.random()* Stage.width、_y:Math.random ()* Stage.height、_rotation:Math.random()* 360}); //ランダムな位置とランダムな回転でステージにリーフを追加しますleafCounter++; //リーフカウンターに1を追加しますcounter.textbox.text=leafCounter; //その番号をテキストボックスに表示します}

単純なエラーであるに違いないと確信しています。画面上の何かをトレースするだけでロジックを機能させることはできますが、「敵」を生成することはできません。

ヘルプやヒントは本当に役に立ちます!私はこれが既存のコードを変更するというちょっとした手間のかかる仕事であることを知っています。

4

2 に答える 2

0

わかりました、スローしているエラーは、あるべきだと思うときに何かが存在しないことを意味します。現時点で最有力候補は最後の位置です。機能するまで、各グローバル変数をコメントアウトします。a.input が 0 に等しいが lastposition ではないことを確認しているようですが、後で lastposition を a.input (0 である必要があります) として設定し、それも確認します。

于 2010-04-18T19:15:13.660 に答える
0

何らかの理由で、army.push( newEnemy ); という行を取り出します。これは完全に機能します!:D

于 2010-04-19T12:13:35.093 に答える