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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     Flash CS5でWorldというクラス名を使うとコンパイルエラー
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
vader
Åê¹ÆNo.47809
投稿日時: 2011-7-29 21:43
常連
居住地: 東京
投稿: 76
使用環境:
MacOS10.8,FlashCS6
Flash CS5でWorldというクラス名を使うとコンパイルエラー
こんにちわ。
いつもこちらのフォーラムで勉強させて頂いてます。

今回、私の知識ではどうしても納得できないエラーに遭遇したので、是非皆様のお知恵をお借りしたく投稿させて頂きました。

環境は、
Mac OS 10.6 Flash CS5 ActionScript3.0
WIndows7 Flash CS5 ActionScript3.0
で確認しました。

状況をご説明しますと、flaファイルと同階層にドキュメントクラスMain.asを置き、package hogeにWorld.asを置きます。各クラス内の記述は下記の通りです。


// ドキュメントクラスMain.as
package {
	import flash.display.MovieClip;
	import hoge.World;
	public class Main extends MovieClip {
		private var world:World;
		public function Main() {
			trace("Main");
			world = new World();
		}
	}
}

// パッケージhoge内World.as
package hoge {
	import flash.display.Sprite;
	public class World extends Sprite {
		public function World() {
			trace("World");
		}
	}
}


テスト用に下記にCS4形式で保存したファイルをzipに圧縮してアップしています。
http://kudox.jp/wp/wp-content/uploads/2011/07/world_test.zip

このflaファイルをFlash Player9書き出しでパブリッシュすると下記のコンパイルエラーがでます。
1046: 型が見つからないか、コンパイル時定数ではありません : GraphicsPath。
1046: 型が見つからないか、コンパイル時定数ではありません : IGraphicsData。

また、Flash Player10書き出しでは、下記のコンパイルエラーがでます。
1136: 引数の数が正しくありません。正しくは 2 です。

同じflaファイルをCS3, CS4でパブリッシュした場合は、エラーになりません。
また、World.asをMain.asと同階層に置いた場合、Worldの型指定やコンストラクタの呼び出しに完全修飾クラス名を用いた場合もエラーになりません。

どうして、package内でWorldというクラス名を使うとエラーになるのかが、どうしても理解できません。
この件について、何か情報をお持ちの方がおられましたら、お教え頂けないでしょうか?

つまらない質問で大変恐縮ですが、何卒宜しくお願いします。
野中文雄
Åê¹ÆNo.47810
投稿日時: 2011-7-29 23:00
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Flash CS5でWorldというクラス名を使うとコンパイルエラー
Flash CS5/Mac OS X.6で再現しました。
引用:
vaderさんは書きました:
環境は、
Mac OS 10.6 Flash CS5 ActionScript3.0
WIndows7 Flash CS5 ActionScript3.0
で確認しました。

状況をご説明しますと、flaファイルと同階層にドキュメントクラスMain.asを置き、package hogeにWorld.asを置きます。各クラス内の記述は下記の通りです。
...[中略]...
テスト用に下記にCS4形式で保存したファイルをzipに圧縮してアップしています。
http://kudox.jp/wp/wp-content/uploads/2011/07/world_test.zip

何かいるみたいですね。 CS5.5では問題は解消しているようです。
// 新規FLAファイル: フレームアクション
var test:World = new World(this, this);
function createWorld() {}
function getStepSize(temp) {}
function setStepSize(temp, temp2) {}
trace(test);  // 出力: [object World]

引用:
また、Flash Player10書き出しでは、下記のコンパイルエラーがでます。
1136: 引数の数が正しくありません。正しくは 2 です。

同じflaファイルをCS3, CS4でパブリッシュした場合は、エラーになりません。
また、World.asをMain.asと同階層に置いた場合、Worldの型指定やコンストラクタの呼び出しに完全修飾クラス名を用いた場合もエラーになりません。


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

vader
Åê¹ÆNo.47819
投稿日時: 2011-7-30 18:24
常連
居住地: 東京
投稿: 76
使用環境:
MacOS10.8,FlashCS6
Re: Flash CS5でWorldというクラス名を使うとコンパイルエラー
野中さま

検証して頂き、誠にありがとうございます。
お教え頂いたコードで、こちらでもWorldインスタンスを作成できました。

つまりFlash CS5では、トップレベルにWorldという謎のクラスが存在するということでしょうね。
おそらくバグなのでしょうが、納得できました。

一時は、Flash CS5での作業をあきらめようと思っていたところでした。
おかげさまで安心して作業できます。

貴重なお時間を頂き、本当にありがとうございました。

野中文雄
Åê¹ÆNo.48029
投稿日時: 2011-9-23 4:19
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Flash CS5でWorldというクラス名を使うとコンパイルエラー
クラスWorldは、非ドキュメントの物理エンジンに含まれているようです。昨年11月に書かれた英文blogに、ライブラリの中身を探った解説がありました。そのblogのテスト用コードをもとに、簡単なサンプルをつくって解説しました。

F-site「Flash CS5に潜む謎のクラスWorld II ? 内緒の物理エンジン


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

vader
Åê¹ÆNo.48076
投稿日時: 2011-9-27 13:01
常連
居住地: 東京
投稿: 76
使用環境:
MacOS10.8,FlashCS6
Re: Flash CS5でWorldというクラス名を使うとコンパイルエラー
野中さま

投稿に気付くのが遅くなり、返信が遅れまして申し訳ございません。
追加の情報ありがとうございます。

物理エンジンだったんですね。
非ドキュメントのクラスが残った経緯も納得できました。
物理エンジンって結構需要あると思うので、次期バージョンに期待したいですね。

ちょっと時間がなくて、まだ試せていないのですが、時間ができたら試してみようと思います。
本当にありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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