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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     PopUpManagerで表示するコンテンツに関して
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kazamin
Åê¹ÆNo.20083
投稿日時: 2005-9-7 12:57
新米
居住地: 試される大地
投稿: 7
使用環境:
WinXP,Flash MX2004 PRO
PopUpManagerで表示するコンテンツに関して
Flash MX 2004にてフォームアプリケーションを製作しています。
色々と勉強をしながらやっているのですが、プログラミング(Java屋)はそれなりに解るもののFlashに関しては素人に毛が生え始めたところで概念を理解できずに混乱しています。
次のような動作をするアプリケーションが目標です。

-あるボタンをクリックすると、商品選択の詳細画面を表示する。
-詳細画面で商品や数量などを選択してOKを押すとメイン画面に反映される。
-別のボタンをクリックすると、別の商品群で詳細画面が表示される。

基礎となるメイン画面はフォームアプリケーションで作成し、
別窓を開く処理に関しては、PopUpManager.createPopUp を利用することも実現しました
ですが、この辺りでcontentPathやリンゲージなどの概念の理解が薄く行き詰まっています。

現在、『詳細画面』は1つのスクリーンとして作成し、
visible = false
contentPath = editForm

と設定しています。
『詳細画面』の表示箇所には
	var initParams:Object = { title:"商品選択", contentPath:"editForm" };
	_root.myWindow = mx.managers.PopUpManager.createPopUp(_root, mx.containers.Window, false, initParams);

としております。
(_root.myWindowはクローズ処理の為の参照)

これにより、『詳細画面』はダイアログとして表示されます。
しかし、『詳細画面』の中では商品一覧をCSVから読み込む処理を記述しているのですが、
アプリケーションの実行時と、ダイアログの生成時の2回処理が走っているようです(traceで確認)。
つまり、アプリケーションの本体には表示されていない『詳細画面』のインスタンスがあり、
別窓を開く時に、さらに『詳細画面』のインスタンスを作成しているのでは?と推測しています。

別の方法を取った場合、つまり、ムービークリップとして『詳細画面』を作成した場合なのですが、
詳細画面の枠は表示されるものの、中身が表示されないという現象になりました。
このときは、ムービークリップを作り、リンゲージしています。
識別子:editForm
AS2.0クラス:mx.core.View



質問内容ですが、2点です。
1.結局、contentPathとは何者なのか?
 コンテンツ(=MovieClip?)を認識する為の"名前"ということは解りますが、
 インスタンス名でもなければクラス名でもないとなると何者なのでしょうか?
 単に、クラス名の別名という形なのでしょうか?
2.リンゲージとはなんなのか?
 「リンゲージする」ということがまだ理解できません。
 1の推測が正しいのであれば、あるコンポーネント(=MovieClip?)に識別子をつけて
 クラス名ではなく識別子でアクセスさせる為の仕組みということでしょうか?

以上、解りにくいかもしれませんが、ご教授願えればと思います。
尚、『詳細画面』はクラス化して商品群を変えて再利用するというのが最終的な目標です。
野中文雄
Åê¹ÆNo.20085
投稿日時: 2005-9-7 13:55
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: PopUpManagerで表示するコンテンツに関して
細かいところがよくわかりませんけど、それがご質問のポイントではないようなので、軽く触れるだけにします。
引用:
kazaminさんは書きました:
Flash MX 2004にてフォームアプリケーションを製作しています。

『詳細画面』は、Windowインスタンスに表示するコンテンツですよね。以下の設定は、[プロパティインスペクタ]のパラメータのように見受けられます。Window.contentPathプロパティと、は関係ないように思えますけど。私自身はフォームをあまり使わないので、何か勘違いがあるのかもしれません。
引用:
現在、『詳細画面』は1つのスクリーンとして作成し、
visible = false
contentPath = editForm
と設定しています。
『詳細画面』の表示箇所には
	var initParams:Object = { title:"商品選択", contentPath:"editForm" };
	_root.myWindow = mx.managers.PopUpManager.createPopUp(_root, mx.containers.Window, false, initParams);
としております。

「2回」の処理というのは、どこで何を確認された結果ですか? MovieClipシンボルeditFormの第1フレームアクションでしょうか? それとも、何かActionScript 2.0クラスを設定したコンストラクタですか?
引用:
しかし、『詳細画面』の中では商品一覧をCSVから読み込む処理を記述しているのですが、
アプリケーションの実行時と、ダイアログの生成時の2回処理が走っているようです(traceで確認)。

「AS2.0クラス」にmx.core.Viewを指定する必要は、通常はありません
引用:
別の方法を取った場合、つまり、ムービークリップとして『詳細画面』を作成した場合なのですが、
詳細画面の枠は表示されるものの、中身が表示されないという現象になりました。
このときは、ムービークリップを作り、リンゲージしています。
識別子:editForm
AS2.0クラス:mx.core.View

Window.contentPathは、MovieClipシンボルのリンケージ識別子を指定するプロパティです。リンケージ識別子は、シンボルの名前(識別子)です。

シンボルを作成するときにつける「名前」は、SWFに書出されず、ActionScriptの管轄外になります。また、ActionScriptは原則として,[ライブラリ]のシンボルを直接操作することはありません。しかし、例外的に操作が必要な場合にかぎり、ActionScriptで認識可能な名前(識別子)を別途設定します。

したがって、インスタンスともクラスとも別物ということになります。しいていえば、インスタンスを作成するためのデータソースです。外部SWFをロードする場合のURLと似たような位置づけでしょう。
引用:
1.結局、contentPathとは何者なのか?
 コンテンツ(=MovieClip?)を認識する為の"名前"ということは解りますが、
 インスタンス名でもなければクラス名でもないとなると何者なのでしょうか?
 単に、クラス名の別名という形なのでしょうか?

参考:「リンケージ」(PDF/約76KB)
引用:
2.リンゲージとはなんなのか?
 「リンゲージする」ということがまだ理解できません。


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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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