私は最近、この同じプロジェクトに関する質問を投稿し、walkietokyo から有益な回答を得ました。前の質問
したがって、私の新しい質問は、そのソリューションを使用してテキスト スプライトを検索可能にすることです。したがって、この場合、作成された動的テキスト フィールドのいずれかをクリックすると、as3 はその特定のテキスト フィールドの内容を xml 内のデータと照合し、それを行うと、ノードのコンテナ内から別のノードを取得します。 xml の各部分 (たとえば
<Searchtext Wordlookup="chris cheeser">
<location>1</location>
<Name>chris cheeser</Name>
</Searchtext>
クリックしたテキストフィールドが chris Cheeser で満たされていることに気付き、それを Wordlookup と照合して場所を特定し、それを同じ名前のムービークリップと照合します)
私の現在の as3 は次のようになります。
private function XMLLoader(e:Event):void
{
xmlData = new XML(e.target.data);
ParseList(xmlData);
}
private function ParseList(nameData:XML):void
{
var nameList:XMLList = nameData.Searchtext.Name;
// var textContainer:Sprite = new Sprite();
this.addChild(textContainer);
for each (var nameElement:XML in nameList){
// var format:TextFormat = new TextFormat();
format.font = "Arial MT";
format.size = 22;
format.color = 0x006699;
var currTextField:TextField = new TextField();
currTextField.defaultTextFormat = format;
currTextField.appendText(nameElement.text() + "\n");
currTextField.y= 1297 + textContainer.height;
currTextField.height = 40;
currTextField.width = 280;
currTextField.x= 88;
currTextField.selectable = false;
textContainer.addChild(currTextField);
trace(nameElement.text());
}
}
private function onTextClick(e:Event):void
{
var currTextField:TextField = e.target as TextField;
if (SearchHolder != null){
TweenMax.to((this["$" + SearchHolder]), 1, {removeTint:true});
}
var resultZ:String = xmlData.Searchtext.(@Wordlookup == currTextField.text.toLowerCase).location.toString()
SearchHolder = resultZ ? resultZ : "Try again";
trace(resultZ);
TweenMax.to(["$" + SearchHolder], 1, {tint:0x00ffcc});
trace("This name was clicked:", currTextField.text);
}
コメントアウトされているものはすべて関数の外側に配置されており、resultZ と SearchHolder の両方が公に文字列として識別されていますが、var resultZ を定義する行に問題があり続けています (これは、何時間もかけてそれを理解しようとすることでわかります) ) 現在、resultZ のトレースは何も生成しません。これは、まだ機能する入力フィールドを使用して同じ関数をセットアップしているため、currTextfield と関係があることを示しています。どんな助けでも大歓迎ですが、説明的になるようにしてください、私はまだ学んでいます!! ありがとう!!