トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     一定間隔でフレームを行き来する処理
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ibm-old
Åê¹ÆNo.47884
投稿日時: 2011-8-15 3:58
新米
居住地:
投稿: 5
使用環境:
Mac OSX,Flash CS5
一定間隔でフレームを行き来する処理
as3.0でアクションゲームを作ろうとしているものです。全くの初心者なため、基本的なところで躓いてしまいました。
ゲーム中に現れる敵キャラクターの挙動を、一定間隔でフレームを行き来する処理で作ろうとしました。
そこで、下のようなスクリプトをフレームに書き込んだmcを、敵キャラクターのmcの中に配置してみたところ、動きはするのですが出力パネルにエラーが出続けレスポンスが低下します。


import flash.events.Event;

var timer_count:uint;

addEventListener(Event.ENTER_FRAME,e);
function e(e:Event):void
{
	if (timer_count < 100)
	{
		timer_count++;
	}

	if (timer_count == 100)
	{
		MovieClip(parent).gotoAndStop("attack");
	}
}


敵mcのタイムラインにはattack,neutoralというラベルを設定したフレームがあり、これはneutoral側に配置しました。attack側でも同様にしてnewtoralに戻るように処理をしています。

出力パネルには以下のようなエラーが出ます。


TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。


調べてみたところ、表示リストに入っていないオブジェクトから、stageプロパティなどにアクセスすると出てくるらしいということは分かったのですが、この場合原因が何なのか、よく分かりません。
一応動くという所が不可解で、放っておけないため投稿させて頂きました。
何卒、宜しくお願い致します。
野中文雄
Åê¹ÆNo.47885
投稿日時: 2011-8-15 10:39
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 一定間隔でフレームを行き来する処理
引用のスクリプトが原因であることは特定できているのでしょうか。エラーが出ることを「動きはする」とはあまりいいません。自動車でいえば、いわばボンネットがつぶれた状態で運転して「レスポンス」を云々しているようなものです。取りあえず、以下をご参照ください。

予め配置したインスタンスの存在しないフレームに移動しても参照が消えない
引用:
ibm-oldさんは書きました:
そこで、下のようなスクリプトをフレームに書き込んだmcを、敵キャラクターのmcの中に配置してみたところ、動きはするのですが出力パネルにエラーが出続けレスポンスが低下します。
...[中略]...
出力パネルには以下のようなエラーが出ます。
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。

調べてみたところ、表示リストに入っていないオブジェクトから、stageプロパティなどにアクセスすると出てくるらしいということは分かったのですが、この場合原因が何なのか、よく分かりません。


----------------
 

ibm-old
Åê¹ÆNo.47892
投稿日時: 2011-8-16 22:52
新米
居住地:
投稿: 5
使用環境:
Mac OSX,Flash CS5
Re: 一定間隔でフレームを行き来する処理
ご回答ありがとうございます。そして、お礼が遅れてすみません。
お陰さまでエラーが無くなりました。原因は、このスクリプトのあるフレームから次へ移る際に、イベントリスナーが残ってしまっていることのようでした。
確かに、エラーを無視して「一応動く」とは言えませんね……
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops