![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
こんにちは。
actionscript3.0にて制作をしております。
FLASH CS4上にテキストフィールドが入ったムービークリップが予め作成してあり、
それを「box_mc」という名前でライブラリに登録しております。
box_mcを配列に格納し、それぞれにマウスイベントで横に10移動する処理を割り当てたく
下記の様な文法で作成しましたが、ランタイムエラー「#1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」とエラーが表示されてしまいます。
それぞれの配列に正しくマウスイベントを割り当てるにはどうしたら良いでしょうか?
var boxArray:Array = new Array();
for (var i:int = 0; i < 3; i++) {
boxArray[i] = new box_mc();// ボックス
// マウスオーバーイベント
boxArray[i].addEventListener(MouseEvent.MOUSE_OVER, function (event:MouseEvent):void {
boxArray[i].x = 10;
});
}
お手数では御座いますが、ご教授いただけると幸いです。
宜しくお願い申し上げます。
No.3ベストアンサー
- 回答日時:
#1の方と同じような内容ですが,
こんな感じで良いのではないでしょうか (コピペ可↓)。
--------------------------------
var boxArray:Array = new Array();
for (var i:int = 0; i < 3; i++) {
boxArray[i] = new box_mc();
addChild(boxArray[i]);
boxArray[i].y = 20*i;
boxArray[i].addEventListener(MouseEvent.MOUSE_OVER, function (event:MouseEvent):void {
// ★↓ここを変更
event.currentTarget.x += 10;
});
}
// ★↓こうして確認してみれば?
trace("「i」の値は?→" + i);
--------------------------------
「制御」→「ムービープレビュー」で動作確認します。
↑これでどこが原因かわかりますか?
for文 を抜けた後,
変数「i」の値は 3 になるのです。
for文 によって boxArray の中の要素(box_mc参照変数)は,
boxArray[0],boxArray[1],boxArray[2] の 3つしかできませんよね?
つまり boxArray[i] つまり boxArray[3] など存在ません。
各ムービークリップに人間がロールオーバーする頃など,
for文 などとっくに抜けきっていて,「i = 3」 で止まっています。
したがって書かれていらっしゃる
> boxArray[i].x = 10;
だと,どのムービークリップにロールオーバーしようとも,
boxArray[3] を 10px に移動させようとします。
だから
「null のオブジェクトを参照してます(そんなものありませんで!)。」
というエラーが出るのです。
No.2
- 回答日時:
John12345さん、
それぞれのインスタンスを独立して動かしたいということなので、こういうことかと思います。
//ここから
var boxArray:Array = new Array();
var nTarget:Number=stage.stageWidth/2;//ステージ中央値
for (var i:int = 0; i < 3; i++) {
var flag:Boolean=false;//動かすかどうかの制御変数定義
boxArray.push(flag);//配列に、flagを格納し、
var mc:Box_mc=new Box_mc();// ボックスのインスタンを生成
addChild(mc);//表示し、
mc.id=i;//iをmcに動的に作ったプロパティ idに格納しておく
mc.mouseChildren=false;//mcに入れ子になった、ダイナミックテキスト _txtをマウスに反応させないようにしておく
mc._txt.text=String(i);//_txtにiを記載
mc.y=i*80;//mcのY軸方向の配置、適当です
mc.addEventListener(MouseEvent.MOUSE_OVER,xMove,false,0,true);
mc.addEventListener(Event.ENTER_FRAME,xEnterframe,false,0,true);
}
function xMove(e:MouseEvent):void {
boxArray[e.target.id]=true;//それぞれのe.target.id番目のflagをtrueとする
e.target.nextFrame();//第二フレームに移動して、色を変化させる→box_mcを2フレームで作っておき、第一フレームには、this.stop();と記載
}
function xEnterframe(e:Event):void {
if (boxArray[e.target.id]) {//e.target.idで配列からflagを取り出し、それが、trueなら、
e.target.x+=(nTarget-e.target.x)/10;//ステージ中央に向かって、目標接近スクリプトで動かす
}
if (e.target.x>(nTarget-1)) {//ステージ中央から1pxl以内に突入したなら、(永遠に、中央値にはならないので)
e.target.removeEventListener(Event.ENTER_FRAME,xEnterframe);//削除
}
trace(e.target.x);//検証用
}
//ここまで
No.1
- 回答日時:
var boxArray:Array = new Array();
for (var i:int = 0; i < 3; i++) {
boxArray[i] = new box_mc();// ボックス
// マウスオーバーイベント
boxArray[i].addEventListener(MouseEvent.MOUSE_OVER, function (event:MouseEvent):void {
event.target.x = 10;
});
}
僕も初めてわかったんですが、イベントリスナーの引数の関数のなかは
名前空間が別になっているみたいですね
ということでevent.targetで対象をとるようにすれば問題なくいけるみたいです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像表示をアルファでフェード...
-
○秒間実行 AS3
-
アセンブリ言語のcasl2について...
-
photoshopで書いた四角の枠の中...
-
python ボタンを押すと複数の関...
-
VBAからPDFのテキストフィールド
-
RPG(AS400)の本、サイトってあ...
-
【VB.NET】別Formのボタンが押...
-
static関数がmapファイルに載ら...
-
VBAで改行の入ったデータの正規...
-
accessの検索について質問です...
-
360度パノラマ写真をループでき...
-
AS3.0 でフェードイン、
-
フォームのテキストの入力数字...
-
【Photoshop】レイヤー効果の境...
-
場面が移り変わるときかっこよ...
-
外部テキストファイルより座標...
-
Flashでレーダーチャート
-
多言語を混在できるか。
-
ウインドウハンドルとインスタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画像表示をアルファでフェード...
-
ムービークリップ変換について...
-
ActionScript スクロールメニュー
-
何で重なり合おうとするんでし...
-
ステージにある複数のインスタ...
-
for文を使ったボタン
-
配列に入れたムービークリップ...
-
○秒間実行 AS3
-
Actionscript3.0 子のイベント...
-
Actionscript3.0のクラス定義の...
-
FLASH 定型のASを登録しといて...
-
addChildの使い方
-
外部テキスト読み込みでマーキ...
-
AS3の配列の中にアクセス
-
関数を停止するには。。。。
-
as3 addEventListenerの動的な...
-
actionscript3.0 オブジェクト...
-
actionscript3.0 データ型について
-
複数mcのランダム再生とmc指定...
-
photoshopで書いた四角の枠の中...
おすすめ情報