以下のようなコードで、ブロック崩し的なものを作ろうとしています。
.flaファイルのステージ上には、プレイヤーが操る左右に動く棒状の自機があります。
ボールはステージにあらかじめ配置せずに、コードの中でnew演算子で呼び出して、最初は自機の子要素として自機にくっついており、スペースキーを押すとボールがステージの子要素に変わり、発射されるようにしたいのですが、以下のコードだとエラーになります。
~略~
public class Main extends MovieClip
{
var vx:int;
public function Main():void
{
init();
}
function init():void
{
vx = 0;
var ball:Ball = new Ball(); ←ここについての質問です
player.addChild(ball);
ball.x = 0;
ball.y = 0;
stage.addEventListener('keyDown',onKeyDown);
stage.addEventListener('keyUp',onKeyUp);
stage.addEventListener('enterFrame',onEnterFrame);
}
function onKeyDown(e:KeyboardEvent):void
{
if (e.keyCode == Keyboard.LEFT)
{
vx = -5;
}
else if (e.keyCode == Keyboard.RIGHT)
{
vx = 5;
}
else if (e.keyCode == Keyboard.SPACE)
{
stage.addChild(ball); ←この行でエラーが出ます。
ball.x = player.x;
ball.y = player.y;
}
}
~以下略~
この場合、「1120: 未定義のプロパティ ball へのアクセスです。」と、エラーが出てしまいます。
ですが、ボールをステージにあらかじめ配置しておくと、うまくいきます。
子要素を変えなくても作れるとは思うんですが、
あえてそうするなら、new演算子で動的に配置したインスタンスの場合、
どのようなコードを書いたらよいでしょうか?
ご教授お願いします。
No.1ベストアンサー
- 回答日時:
そのBallというクラスの定義は、
class Ball extends MovieClip
という継承宣言は入っていますか?
stageにaddChild()できるのは、MovieClipやSpriteクラスを継承したクラスのインスタンスだけですよ。
ありがとうございました。
どうやらエラーの原因の目の付け所が間違っていたようです。
インスタンスの変数宣言をinitメソッド内で定義していたので、
インスタンスの入れ物用のball変数がローカルスコープになっていたようです。
メソッドの外で定義し直したらいけました><
また機会がありましたらアドバイスお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 英語表現についてどうもわからないので教えて貰えないでしょうか? 具体的には以下の文の中でreflec 1 2023/04/29 20:59
- その他(プログラミング・Web制作) 物理の斜方投射で目盛りに数値を入れたい 2 2023/05/27 06:32
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
- その他(プログラミング・Web制作) Pythonでのかんたんな物理シミュレーションについての書籍 5 2023/06/02 07:37
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- その他(プログラミング・Web制作) 物理の斜方投射の目盛り線とx軸、y軸の追加について 3 2023/05/26 21:11
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング、アーキテクチ...
-
new演算子について教えていただ...
-
DataTableの件数を取得したい
-
インスタンスからハンドルを得...
-
【VB.NET】別Formのボタンが押...
-
photoshopで書いた四角の枠の中...
-
四乗根を英語で言うと・・・
-
Pythonのtkinterについて
-
テキストボックスにセルの値を...
-
UWSCのBTN関数について。
-
シンボル化解除の方法
-
五芒星は、悪魔崇拝とどういう...
-
VBScriptでMsgBoxのYesNoボック...
-
VBAユーザーホームテキストボッ...
-
テキストボックスの中身をリセ...
-
Flashの表示サイズを動的に変更...
-
python ボタンを押すと複数の関...
-
【Photoshop】レイヤー効果の境...
-
Simulinkのサブシステムの完全...
-
マスクをとるとオーバーフロー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB.NET】別Formのボタンが押...
-
フォームの生成と破棄
-
DataTableの件数を取得したい
-
ウインドウハンドルとインスタ...
-
Flash ステージに初期配置したM...
-
インスタンスとポインタ
-
gotoAndPlay gotoAndStopについて
-
フラッシュのことで質問です
-
タイプライブラリ
-
Python でシャットダウンのコマ...
-
Flash ActionScriptで変形点を...
-
チェックボックスの制御(onCli...
-
画像を一定時間ごとに切り替え...
-
フェードイン-(待機)-フェー...
-
CREATESTRUCT と GetWindowLong
-
ハンドルからインスタンス?を取...
-
「Me」を「Form1」にするとエラ...
-
【FLASH】インスタンス名の一覧...
-
メール
-
ムービークリップ内に配置した...
おすすめ情報