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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     動的なタブインデックスの作成について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
newborn
Åê¹ÆNo.9730
投稿日時: 2004-8-5 18:40
常連
居住地: StoneRiverPrefecture
投稿: 170
使用環境:
MAC OSX panther/ WIN XP, Flash MX2004 pro,
動的なタブインデックスの作成について
皆さん、こんにちわ。

初めて投稿させて頂きます。

attachMovieを使って複製されたムービークリップBの中にテキストフィールドが10個あります。これにtabindexを与えてフォーカスマネージャーでのタブ移動は可能なのでしょうか?
元々ステージに配置されたムービークリップA内でのテキストフィールド間でのフォーカス移動はうまくいっているのですが、動的に作成したムービークリップBのなかでは、うまくいきません。
ちなみにムービークリップBを生成した時に下記のようなスクリプトを書いています。

MovieClipB.tabEnabled=false
MovieClipB.tabChildren=true

for(var i=1; i<=10; i++){
MovieClipB["テキストフィード"+i].tabindex=_root.focusManager.nextTabIndex
}


どなたかご存じでしたら、教えて下さい。
お願い致します。
野中文雄
Åê¹ÆNo.9743
投稿日時: 2004-8-6 13:59
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 動的なタブインデックスの作成について
FocusManagerは、アクティブになっていますか? また、Flash Player 7書出しでは、大文字小文字は区別されます。
引用:
newbornさんは書きました:
attachMovieを使って複製されたムービークリップBの中にテキストフィールドが10個あります。これにtabindexを与えてフォーカスマネージャーでのタブ移動は可能なのでしょうか?
...[中略]...
MovieClipB.tabEnabled=false
MovieClipB.tabChildren=true
trace(_root.focusManager);  // 出力: _level0.focusManager
for(var i=1; i<=10; i++){
// MovieClipB["テキストフィード"+i].tabindex=_root.focusManager.nextTabIndex
MovieClipB["テキストフィード"+i].tabIndex=_root.focusManager.nextTabIndex;
}


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

newborn
Åê¹ÆNo.9751
投稿日時: 2004-8-6 20:01
常連
居住地: StoneRiverPrefecture
投稿: 170
使用環境:
MAC OSX panther/ WIN XP, Flash MX2004 pro,
Re: 動的なタブインデックスの作成について
野中さん、お返事ありがとうございます!

focusManagerはアクティブになっています。
trace(_root.focusManager.enabled)//出力:true
と帰ってきます。

具体的な説明させて頂くと、Flashで伝票フォームを作成しています。
ムービークリップ1が最初からステージに配置してあり、その中にコンボボックス2つとテキストフィールドが8つあります。
ムービークリップ1内の項目をすべて入力すると、ムービークリップ1と同じ項目を含む、ムービークリップを2をattachMovieでステージに配置するといった感じの繰り返しです。
以下が複製するファンクションです。


id=1
function addNewLine() {
	trace(_root.focusManager.enabled)
	id++;
	trace("id:"+id);
	_root.attachMovie("MovieClip", "MovieClip"+id, id);
        theMovie = _root["MovieClip"+id];
	theMovie._y = 41.4*(id-1);
	theMovie.no = id;
	theMovie.tabEnabled = false;
	theMovie.tabChildren = true;
	for (var i = 0; i<=10; i++) {
          theMovie["field"+i].tabIndex=_root.focusManager.nextTabIndex;
	  theMovie["field"+i].tabEnabled=true
	  trace("タブインデックス:"+theMovie["field"+i].tabIndex);
	}
}


といったファンクションがあります。
最初から配置されたムービークリップ1にはtabIndex1?10までふってあるので、
trace("タブインデックス:"+theMovie["field"+i].tabIndex)は
11~20までを返します。
疑問1:ここまではよいのですが、実際にタブ移動させてみると、
フォーカスを受け取れるのは、ムービークリップ2のコンボボックスだけでテキストフィールドは無視されます。
疑問2:
次にムービークリップ3を複製すると
trace("タブインデックス:"+theMovie["field"+i].tabIndex)は
23?33までを返します。

どうか僕の疑問を解決して下さい。
お願いします
野中文雄
Åê¹ÆNo.9757
投稿日時: 2004-8-7 3:18
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 動的なタブインデックスの作成について
問題を単純化し、新規のムービーから作成して、現象を確認されていますか?
引用:
newbornさんは書きました:
具体的な説明させて頂くと、Flashで伝票フォームを作成しています。
ムービークリップ1が最初からステージに配置してあり、その中にコンボボックス2つとテキストフィールドが8つあります。

TextFieldインスタンスの数のみ変更して試したところ、現象は再現されません。 ところで、ComboBoxインスタンスにも、"fieldN"という名前をつけられているのでしょうか? 私のサンプルでは、ComboBoxインスタンスにはタブ順序を設定していません。
引用:
ムービークリップ1内の項目をすべて入力すると、ムービークリップ1と同じ項目を含む、ムービークリップを2をattachMovieでステージに配置するといった感じの繰り返しです。
...[中略]...
疑問1:ここまではよいのですが、実際にタブ移動させてみると、
フォーカスを受け取れるのは、ムービークリップ2のコンボボックスだけでテキストフィールドは無視されます。

とくにそのような現象も、見受けられません。問題を再現できる最小限のサンプルムービーを作成してください。
引用:
疑問2:
次にムービークリップ3を複製すると
trace("タブインデックス:"+theMovie["field"+i].tabIndex)は
23?33までを返します。


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

newborn
Åê¹ÆNo.9782
投稿日時: 2004-8-9 14:09
常連
居住地: StoneRiverPrefecture
投稿: 170
使用環境:
MAC OSX panther/ WIN XP, Flash MX2004 pro,
Re: 動的なタブインデックスの作成について
野中さん、
返事が遅くなってすみません。

サンプルファイルを作って頂いて大変ありがとうございます。
野中さんのサンプルでは確かに正常に動作しておりました。

野中さんのサンプルではテキストフィールドになっておりましたが、私が使っているのはコンポーネントのtextInputです。
私がいままでに書いた文章で野中さんに誤解を招いてしまっていたと思いますので、お詫び申し上げます。



引用:
ところで、ComboBoxインスタンスにも、"fieldN"という名前をつけられているのでしょうか? 私のサンプルでは、ComboBoxインスタンスにはタブ順序を設定していません。


コンボボックスにもタブ順を振っています。

引用:
とくにそのような現象も、見受けられません。問題を再現できる最小限のサンプルムービーを作成してください。


こちらから現象の確認の程、宜しくお願いします。

サンプル

AddNewLineのボタンを押して新しいラインを作るとコンボボックスだけがTABINDEXでフォーカスを受け取りtextInputは受け取ってくれません。

ソースファイル
野中文雄
Åê¹ÆNo.9806
投稿日時: 2004-8-11 0:23
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 動的なタブインデックスの作成について
TextFieldとTextInputコンポーネントとでは、動作に違いの出る可能性が十分にあります。
引用:
newbornさんは書きました:
野中さんのサンプルではテキストフィールドになっておりましたが、私が使っているのはコンポーネントのtextInputです。

インスタンス10個は「最小限」とはいえません。数が問題に影響を与えているのでないかぎり、3個もあれば十分です。

また、TextFieldで正しく動作することは、確認されましたか? それが確認できれば、TextFieldとTextInputインスタンスでは動作が異なるらしいという認識にたどりつくはずです。
引用:
こちらから現象の確認の程、宜しくお願いします。

サンプル

AddNewLineのボタンを押して新しいラインを作るとコンボボックスだけがTABINDEXでフォーカスを受け取りtextInputは受け取ってくれません。

ソースファイル

さらに、以下のような疑問があるなら、新規のMovieClipを複製する前に、すでに複製済みのインスタンスのUIComponent.tabIndexの値に変化がないかを確認すべきでしょう。
引用:
newbornさんは書きました:
疑問2:
次にムービークリップ3を複製すると
trace("タブインデックス:"+theMovie["field"+i].tabIndex)は
23?33までを返します。

最小限のムービーを作成するのは、単に新規につくり直して再現性を確認するだけでなく、さらに問題を絞込むための作業です。
id = 1;
// ...[中略]...
function addNewLine() {
    _root.id++;
    trace(_root.id);
    var MC = _root.attachMovie("mc", "mc"+_root.id, _root.id);
    // MC = _root["mc"+_root.id];
    MC._y = _root.mc1._y+(_root.mc1._height+5)*(_root.id-1);
    MC._x = _root.mc1._x;
    MC.tabEnabled = false;
    MC.tabChildren = true;
    //* 以下をコメントアウト
    for (var i = 1; i<=9; i++) {
        MC["field"+i].tabIndex = _root.focusManager.nextTabIndex;
        trace(MC["field"+i].tabIndex);
    }
    //*/
    MC.onEnterFrame = function() {  //【追加】
        for (var i = 1; i<=9; i++) {
            // 以下のステートメントを有効に
            // MC["field"+i].tabIndex = _root.focusManager.nextTabIndex;
            trace(MC["field"+i].tabIndex);
        }
        delete this.onEnterFrame;
    };
}

参考:「アタッチしたMovieClip内のUIコンポーネントにtextが設定できない


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

newborn
Åê¹ÆNo.9820
投稿日時: 2004-8-11 14:19
常連
居住地: StoneRiverPrefecture
投稿: 170
使用環境:
MAC OSX panther/ WIN XP, Flash MX2004 pro,
Re: 動的なタブインデックスの作成について
野中さん、
明解な回答ありがとうございます。
下記のスクリプトに変更したところ、問題なく動作いたしました!
今回は本当にお世話になりました。ありがとうございますm(_ _)m


引用:
d = 1;
// ...[中略]...
function addNewLine() {
_root.id++;
trace(_root.id);
var MC = _root.attachMovie("mc", "mc"+_root.id, _root.id);
// MC = _root["mc"+_root.id];
MC._y = _root.mc1._y+(_root.mc1._height+5)*(_root.id-1);
MC._x = _root.mc1._x;
MC.tabEnabled = false;
MC.tabChildren = true;
//* 以下をコメントアウト
for (var i = 1; i<=9; i++) {
MC["field"+i].tabIndex = _root.focusManager.nextTabIndex;
trace(MC["field"+i].tabIndex);
}
//*/
MC.onEnterFrame = function() { //【追加】
for (var i = 1; i<=9; i++) {
// 以下のステートメントを有効に
// MC["field"+i].tabIndex = _root.focusManager.nextTabIndex;
trace(MC["field"+i].tabIndex);
}
delete this.onEnterFrame;
};
}


----------------
☆☆☆☆☆☆NEWBORN☆☆☆☆☆☆

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

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