Недавно я опубликовал вопрос по этому же проекту, на который был дан полезный ответ walkietokyo. previous questionСоздание динамически созданного текстового поля для поиска в xml
Так что мой новый вопрос использует это решение, чтобы сделать текст спрайтов доступным для поиска. Итак, в этом случае вы можете щелкнуть по любому из созданных динамических текстовых полей, as3 будет соответствовать содержимому этого конкретного текстового поля для данных в xml, при этом он заберет еще один узел из контейнера узлы для каждой части XML (например
<Searchtext Wordlookup="chris cheeser">
<location>1</location>
<Name>chris cheeser</Name>
</Searchtext>
так что было бы заметить, что текстовое поле я нажал наполнен Крис Громобой, было бы тогда совпадающие с моим 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, поскольку у меня есть идентичная функция, настроенная с полем ввода, которое все еще работает. Любая помощь будет оценена, но постарайтесь быть описательной, я все еще участвую! Благодаря!!
Таким образом, я сузил его до определенной проблемы. Я выполнил ваш ответ, но он не полностью исправлен.Я не получаю никаких ошибок, но вспышка не соответствует выходному сигналу целевого текстового поля на что-либо в xml. Он отслеживает вывод целевого текстового поля без проблем, поэтому я не уверен, почему это происходит, все соответствует написанию и типу. Может быть, это потому, что текстовые поля создаются с помощью спрайтов, и это может затруднить поиск строки? (это полная догадка). Я ДЕЙСТВИТЕЛЬНО оцениваю всю вашу помощь, вы были чрезвычайно полезны! –
Постарайтесь думать только о точном коде, требуемом для выполнения того, что вы хотите. Есть что-то, что вы пропустили? Что-то не так о структуре вашего XML? [Здесь вы найдете немного измененную версию кода] (http://pastebin.com/bKbLuUCG). Я предоставил для вашего последнего вопроса, который содержит _only_ код для получения имени из текстового поля и использования его для поиска XML-документ. –
Я этого даже не видел до сих пор. Я должен поблагодарить вас за то, что постоянно помогал мне. Я вернулся в этот раздел после перерыва и внедрил ваши предложения. Несмотря на то, что орфография и все совпадения совпадают, узел местоположения все еще возвращает нуль (даже если узел имени не имеет имени). Я не могу понять, почему. –