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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     ドキュメントクラスのインスタンスを生成しようとするとエラーが返ります。
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
atsushi kurosawa
Åê¹ÆNo.41724
投稿日時: 2009-3-10 19:20
新米
居住地: 東京都
投稿: 7
使用環境:
Windows XP pro
Flash CS3
ドキュメントクラスのインスタンスを生成しようとするとエラーが返ります。
制作環境:windows xp
ソフトウェア:Flash CS3

些細なことかも知れないのですが、ご教授いただけると幸いです。

コンストラクタでは trace("test");しかない、以下のようなドキュメントクラスを作ました。

============================================================
package {

   import flash.display.MovieClip;
   import flash.events.Event;

   public class Main extends MovieClip {


       public function Main(){

            trace("test");

       }

   }

}
============================================================

パブリッシュすると勿論、test と表示されるのですが、メインのタイムライン1フレーム目にて、

============================================================
var m:Main=new Main();
============================================================


と、インスタンスを生成しようとすると以下のようなエラーがでます。

============================================================
Error: Error #2136: SWF ファイル ●●● には無効なデータが含まれています。
============================================================

原因がどうしても分からなく、困っています。
どなたか、ご理解のある方のご教授をよろしくお願いいたします。
ニノミヤ カズノリ
Åê¹ÆNo.41725
投稿日時: 2009-3-10 19:52
職人
居住地: 東京
投稿: 430
使用環境:
CS4
.4.11, .5.7
XP Pro(sp3)
Flash Player 10,0,22,87,
AIR 1.5.1,
IE 5.5 & 6 & 7 & 8,
Firefox 2.0.0.20 & 3.0.11 & 3.5,
Opera 9.64,
Safari 4,
Google Chrome 2.0.172.31,
Netscape 7.1
Re: ドキュメントクラスのインスタンスを生成しようとするとエラーが返ります。
具体的な理由はよく分かりませんが、
スタックオーバーフローの要因となるからではないでしょうか。
atsushi kurosawa
Åê¹ÆNo.41726
投稿日時: 2009-3-10 20:08
新米
居住地: 東京都
投稿: 7
使用環境:
Windows XP pro
Flash CS3
Re: ドキュメントクラスのインスタンスを生成しようとするとエラーが返ります。
ご返信ありがとうございます。

さきほど、スタックオーバーフローの件でご指摘いただきましたが、まずスタックオーバーフローからお調べしてみましたが、状況からいうと、そうではないような気もそうである気もしています。(曖昧ですみません。)

てことで、ドキュメントクラスのソースにコンストラクタ以外のメンバメソッドを追加してみました。(以下ソース)

function test(){

  trace("メンバメソッドを呼び出しました");

}

で、メインのタイムラインで以下のように呼出してみました。

test();


すると、trace();が問題なく実行されました。
つーことは、ドキュメントクラスのインスタンスは既に存在しており、ちょっとした(AS2で言うとこの)グローバルメソッド的な存在になっているのでは?

・・・と思いました。

ですので、これから何らかの形でそのインスタンスにアクセスして、インスタンスを削除→新たにインスタンスを生成できないか試してみます。


ありがとうございました。
ニノミヤ カズノリ
Åê¹ÆNo.41727
投稿日時: 2009-3-10 20:19
職人
居住地: 東京
投稿: 430
使用環境:
CS4
.4.11, .5.7
XP Pro(sp3)
Flash Player 10,0,22,87,
AIR 1.5.1,
IE 5.5 & 6 & 7 & 8,
Firefox 2.0.0.20 & 3.0.11 & 3.5,
Opera 9.64,
Safari 4,
Google Chrome 2.0.172.31,
Netscape 7.1
Re: ドキュメントクラスのインスタンスを生成しようとするとエラーが返ります。
スタックオーバーフローと書いたのは、例えば下記のコードを実行した場合に陥ります。
package
{
	import flash.display.MovieClip;
	
	public class Main extends MovieClip
	{
		public var main:Main;
		
		public function Main()
		{
			main = new Main();
		}
	}
}

今回の場合、ドキュメントクラスに設定されたクラスのインスタンスを生成すると、
ドキュメントクラスと同じくフレームスクリプトを実行する恐れがあり、
上記のコードの様に繰り返し生成していくのではないかな、と想像した次第です。
つまりこう言った問題を想定したエラーではないかと言う想像です。
実際はどうか分かりません。
野中文雄
Åê¹ÆNo.41728
投稿日時: 2009-3-10 20:31
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ドキュメントクラスのインスタンスを生成しようとするとエラーが返ります。
ドキュメントクラスは、メインタイムラインに関連づけられたクラスです。つまり、インスタンスはメインタイムラインのデータを実体としてもつことになります。

そのメインタイムライン上でインスタンスを生成しようとすることは、シンボルのタイムラインにそのシンボル自身のインスタンスを配置することに等しく、エラーが生じます([シンボルの編集]モードで、[ライブラリ]からその編集中のシンボルをステージにドラッグ&ドロップしてみてください)。

メインタイムライン上でインスタンスを生成したいのでしたら、そのクラスはドキュメントクラスとせず、タイムラインの実体から切離すべきです。ドキュメントクラスには、その切離したクラスのインスタンス生成の処理を記述すればよいでしょう。
引用:
famicomさんは書きました:
コンストラクタでは trace("test");しかない、以下のようなドキュメントクラスを作ました。
package {

	import flash.display.MovieClip;
	import flash.events.Event;

	public class Main extends MovieClip {

		public function Main() {
			// ...[後略]...

パブリッシュすると勿論、test と表示されるのですが、メインのタイムライン1フレーム目にて、
var m:Main=new Main();

と、インスタンスを生成しようとすると以下のようなエラーがでます。
引用:
Error: Error #2136: SWF ファイル ●●● には無効なデータが含まれています。


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

atsushi kurosawa
Åê¹ÆNo.41731
投稿日時: 2009-3-10 22:45
新米
居住地: 東京都
投稿: 7
使用環境:
Windows XP pro
Flash CS3
Re: ドキュメントクラスのインスタンスを生成しようとするとエラーが返ります。
>>ニノミヤ様

ご丁寧にありがとうございます。
勉強になります。野中様のご返答で全て解決したのですが、スタックオーバーフローというリスクファクターを知りえたこともかなり大きな収穫でした。

まことにありがとうございました。
atsushi kurosawa
Åê¹ÆNo.41732
投稿日時: 2009-3-10 22:48
新米
居住地: 東京都
投稿: 7
使用環境:
Windows XP pro
Flash CS3
Re: ドキュメントクラスのインスタンスを生成しようとするとエラーが返ります。
>>野中様

引用:

Fumioさんは書きました:
メインタイムラインに関連づけられたクラスです。つまり、インスタンスはメインタイムラインのデータを実体としてもつことになります


完全にこのコトバに救われました。
僕が定義した問題自体がおかしな話だってことに気づけました。

ありがとうございました。本見ますね^^
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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