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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     ケアレスミスに気付けません・・・
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nekoyuki
Åê¹ÆNo.35626
投稿日時: 2007-10-16 13:37
半人前
居住地: 大阪府
投稿: 48
使用環境:
FLASH CS3 Professional
XP Pro(SP2)
ケアレスミスに気付けません・・・
CS3発売から3ヶ月以上経ちました。

自分も仕事が終わってから
ちょくちょくとゲームを作りながらAS3.0を
学んでる訳ですがまだまだ不慣れな所為か
早いスピードで開発することが出来ません。

いつも余計に時間が掛かっていると思うことが
ひとつあります。

それは存在しないプロパティを参照した時のエラーです。

これが発生すると滅茶苦茶焦ります。
何せエラーメッセージには該当箇所のメソッド名しか解らない為、
瞬時に原因を把握出来ません・・。
コメントアウトやらブレイクポイントを設定してデバッカを
起動させてたりして
ようやく発見できるのですが簡単なミスを直すにも
労力を使ってしまいます。

せめて該当箇所のソースの行数と存在しないプロパティ名を
表示してくれれば助かるのですが・・・

皆さんはどんな方法でスクリプトを組んでいますか?
旭日ゆうほ
Åê¹ÆNo.35727
投稿日時: 2007-10-18 22:05
Bak@Fla名人
居住地: 心は岡山
投稿: 91
使用環境:
Windows Vista Home Premium
Flash MX2004 v7.2
Flex2 SDK
Flex3 SDK
FlashDevelop3.0.0 Beta7
Re: ケアレスミスに気付けません・・・
CS3での作り方を良く分かっていないので、もしかしたら見当違いなことを言っているかもしれません。

引用:

nekoyukiさんは書きました:
それは存在しないプロパティを参照した時のエラーです。

というのは、swfを実行したときに出る、
引用:

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

というエラーのことでしょうか?
これは僕もかなり苦しみます。

その場合、デバッグモードでコンパイルすれば、エラーメッセージが
引用:

TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
at game.object.stage.system.statusbar::HPGauge$iinit()[D:\Test\src\game\object\stage\system\statusbar\HPGauge.as:130]
at game.object.stage.system.statusbar::StatusBarTask$iinit()[D:\Test\src\game\object\stage\system\statusbar\StatusBarTask.as:105]
at game.scene.main::StageManager/game.scene.main:StageManager::createDefaultTask()[D:\Test\src\game\scene\main\StageManager.as:509]
at game.scene.main::StageManager/game.scene.main:StageManager::startScene()[D:\Test\src\game\scene\main\StageManager.as:587]
at lib.system.task::Scene/lib.system.task:Scene::endLoadingScreenEffectFinishWaiting()[D:\Test\src\lib\system\task\Scene.as:221]
at Function/http://adobe.com/AS3/2006/builtin::call()
at game.scene.main::StageManager/runFunction()[D:\Test\src\game\scene\main\StageManager.as:648]
at lib.system.task::Screen/lib.system.task:Screen::onEnterFrame()[D:\Test\src\lib\system\task\Screen.as:124]

といったように、関数の呼び出し順とファイル名と行番号が出力されますよ。


----------------
旭日ゆうほ
swf置いてます。AM902

Shimon Hori
Åê¹ÆNo.35732
投稿日時: 2007-10-19 9:17
新米
居住地:
投稿: 26
使用環境:
WinXP / Flash8Pro / FashCS3Pro / FlexBuilder3 Beta2 / AIR Beta2
Re: ケアレスミスに気付けません・・・
私もnullには悩まされています。是非いろいろアイデアを教えていただきたいです。

私自身は最近、AS3でミスしそうなコードを組むときにはtry catchを必ず書くようにしています。

try{
	//コード
	var abc:Sprite;
	var def:Number = abc.width;
}catch(e:TypeError){
	trace("★なにか目印",e);
	trace(e.getStackTrace());
}


直接行数を特定できるわけではありませんが、
エラーが出た時に少なくともこの間のどこかで発生したことになるので、try{ }catchの範囲を狭めて行けば、比較的楽に見つかりますよ。


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

nekoyuki
Åê¹ÆNo.35862
投稿日時: 2007-10-29 14:08
半人前
居住地: 大阪府
投稿: 48
使用環境:
FLASH CS3 Professional
XP Pro(SP2)
Re: ケアレスミスに気付けません・・・
>旭日様
おぉ、まさにその通りですね。
デバッグモードで起動すれば簡単に見つかりますね

どうもデバッグモード=重い&フリーズすると
イメージがあるので敬遠しがちだったんですが
今後はデバッグモードは必須みたいですね。
流石にtraceだけでは対応できなさそうです。
特に自信が無いコードを書いた時には・・・。

>Hori様
trycatchに何か噛ませる事もAS3以降では考慮しなきゃいけない
雰囲気ですね。
Flashプレイヤーでランタイムエラーが発生しましたなんて
あまりにも不細工になりそうなので・・・。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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