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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     ドキュメントクラスインスタンスが初期化されない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
flamming
Åê¹ÆNo.46433
投稿日時: 2010-11-24 18:06
新米
居住地:
投稿: 27
使用環境:
Win7
Flash CS5.5
Flash Develop

<p6370jp> Core i5モデル(AX692AA-AAAA)
オペレーティングシステム Windows® 7 Home Premium 正規版 (32bit) ※1
プロセッサー 名称(機能 ※ 2) インテル® Core™ i5 -650 プロセッサー
(3.2GHz、TB時...
ドキュメントクラスインスタンスが初期化されない
はじめましてflamingoと申します。

AS3にて子swfを読み込むスクリプトを組んでいます。
Aという親swfがあって、
BとCの子swfがあります。
BとCをドキュメントクラスとして作成し、
AからBを呼んだり、Cを呼んだりします。

効率化のためBとCが同じドキュメントクラス名なのですが、
Bを読み込んだ後破棄しているにも関わらず、
Cを読み込んだ際にBの挙動をしてしまいます。

Bを完全に除去するためにいろいろ策を講じたのですが、
ドキュメントクラス自体をremoveChildすることはできても、
参照でしか操作できないので、
正しくnullにできていないように思われます。

loaderに何か命令するなどでうまく動作させられることは可能でしょうか?
よろしくお願いします。
ひろゆき
Åê¹ÆNo.46434
投稿日時: 2010-11-24 18:36
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: ドキュメントクラスが初期化されない
まず、使用環境を「アカウント編集」で記載しておきましょう。

「クラスを破棄する」という時点で間違っているように思います。
インスタンスなら、破棄できると思いますが。

ApplocationDomainを調べてみては?


----------------
質問する際は、回答者に具体的な情報を与えてください。

flamming
Åê¹ÆNo.46435
投稿日時: 2010-11-25 10:16
新米
居住地:
投稿: 27
使用環境:
Win7
Flash CS5.5
Flash Develop

<p6370jp> Core i5モデル(AX692AA-AAAA)
オペレーティングシステム Windows® 7 Home Premium 正規版 (32bit) ※1
プロセッサー 名称(機能 ※ 2) インテル® Core™ i5 -650 プロセッサー
(3.2GHz、TB時...
Re: ドキュメントクラスが初期化されない
ありがとうございます。
確かにクラスは初期化できないですね。
インスタンスとして破棄したかったのです。
ですが、破棄するだとかしないの問題ではないという感じがしてきました。

今まで
context.applicationDomain = ApplicationDomain.currentDomain;
でコンテンツをロードしてました。

他にもApplicationDomainの設定があるということなので、
試してみました。

・context.applicationDomain = new ApplicationDomain();
Staticなプロパティを読み込みの際に使用しているのですが、それが書き換わらずループしました。

・context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
子が自分のライブラリに書き出したオブジェクトを読めません。


上記のどちらかからまたアプローチしていけたら良いのですが…
flamming
Åê¹ÆNo.46462
投稿日時: 2010-11-30 20:22
新米
居住地:
投稿: 27
使用環境:
Win7
Flash CS5.5
Flash Develop

<p6370jp> Core i5モデル(AX692AA-AAAA)
オペレーティングシステム Windows® 7 Home Premium 正規版 (32bit) ※1
プロセッサー 名称(機能 ※ 2) インテル® Core™ i5 -650 プロセッサー
(3.2GHz、TB時...
Re: ドキュメントクラスが初期化されない
進展がありましたことと、階層絡みの質問なので引き続き投稿させていただきます。

ApplicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain)
を使えば子のプログラム同士は独立し、親の静的なメンバにもアクセスできました。
が、静的なメンバから子の持つライブラリオブジェクトにgetDefinitionByNameではアクセス出来ませんでした。
これはApplicationDomain.getDefinitionを使用することで回避できました。

そして、この状態からあるシンボルをランタイム共有読み込みで子1、子2が連続で読み込みます。そうすると子1では読み込め、子2で読む段階にてswf自体は読み込まれるのに、シンボルの定義がみつからないというエラーに陥りました。

しかし、子1、子2のそれぞれのシンボルプロパティの共有読み込みURLの箇所に./から始まるパス名を記述したり、しなかったりしないと読み込めることもありました。

次にそのシンボルを決まったクラスインスタンスにしました。
そうすると定義自体は見つかるようになりましたが連続でロードすると空のムービークリップになってしまいました。

子のプログラム単体ではちゃんと読み込めます。
読み込みの際にはaddstageイベントからレンダリングを待ち、段階を踏んでプログラムを走らせております。


いったいどのような事が起こっているのでしょうか…
imajuk
Åê¹ÆNo.47035
投稿日時: 2011-2-21 20:11
新米
居住地: Tokyo
投稿: 6
使用環境:
MacOSX10.6.6
Flash CS4
FDT 4.2
Re: ドキュメントクラスインスタンスが初期化されない
BとCは名前は同じだけど中身は違うんですよね?
BとCが同じクラス名なのでコンフリクトしてるんだと思います

BとCの共通部分を別のクラスとして抜き出し、それをドキュメントクラスにするのが素直な解決法です。

もしくは、単純にBとCの名前かパッケージ名を変えるんじゃ駄目なんでしょうか?

そもそも同じ名前の違うクラスがあるというのはよほどの理由がないかぎりさけた方がいいと思います。
ApplicationDomainを駆使すれば解決する可能性がありますが、緻密なクラス設計と運用ルールが必要になります。

flamming
Åê¹ÆNo.47263
投稿日時: 2011-3-25 17:52
新米
居住地:
投稿: 27
使用環境:
Win7
Flash CS5.5
Flash Develop

<p6370jp> Core i5モデル(AX692AA-AAAA)
オペレーティングシステム Windows® 7 Home Premium 正規版 (32bit) ※1
プロセッサー 名称(機能 ※ 2) インテル® Core™ i5 -650 プロセッサー
(3.2GHz、TB時...
Re: ドキュメントクラスインスタンスが初期化されない
imajukさん
ありがとうございます。
もとがAS2.0で造られた大きなコンテンツだったもので、
大幅な構造改革にはたじろいでいました。

どうやら共有ライブラリの使用が問題を招いていたようです。
共有ライブラリを使用せず、予めswfを空ロードし、それらを
ApplicationDomain.getDefinitionで生成して利用する仕様にすることで
事なきを得ました。

報告が遅れて申し訳ありませんでした。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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