Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.07.2012, 18:10
nldr вне форума Посмотреть профиль Отправить личное сообщение для nldr Найти все сообщения от nldr
  № 1  
Ответить с цитированием
nldr
 
Аватар для nldr

Регистрация: Jul 2009
Сообщений: 48
По умолчанию Странный глюк при работе с XML.

Кто нибудь знает в чем может быть проблема?

Вот эта функция не работает.
Код AS3:
public function setAnimations(setName:String):void
{
trace(Game.xmlData.units.unit.(@name == setName));
}

А вот так работает:
Код AS3:
public function setAnimations(setName:String):void
{
var str:String = setName; trace(Game.xmlData.units.unit.(@name == str));
}
Добавлено через 2 часа 40 минут
Разобрался.
setName, которое я опрометчиво использовал в качестве имени параметра, видимо используется где-то еще.

Очень жаль что Flash при компиляции даже в strict-mode о таких вещах не предупреждает.


Последний раз редактировалось nldr; 23.07.2012 в 18:23.
Старый 23.07.2012, 22:52
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Похоже на баг компилятора. Начался с примерно 4.0 Flash Builder SDK. У меня споткнулось на имени параметра как "name".

Код AS3:
...(@name === name)
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 24.07.2012, 15:29
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Тут тяжело предупредить, нужно понимать как работает оператор "фильтр". Т.е. xml.(expression) - вот это.

Работает он очень похоже на with, и поэтому возможны похожие казусы, но компилятору трудно понять, что это не то, что хотелось. Т.е. что происходит внутри фильтра:
в цепочку областей видимости добавляется текущий узел (который мы сейчас просматриваем), а все связывания объявленные внутри фильтра ищутся в этой цепочке. Таким образом, если связывание не находится у текущего узла, то его будут искать дальше во всех доступных звеньях цепочки (все импорты, this, super и т.д.).
Вообще, поведение этого оператора на столько не предсказуемо и может измениться динамически в уже скомпилированой программе, что я бы поостерегся его использовать. Или, по крайней мере использовать его исключительно со связываниями в которых однозначно указан объект которому они принадлежат, например:
Код AS3:
xml.(valueOf().@attribute)
- нормально, т.как valueOf() однозначно существует у текущего узла.
Код AS3:
xml.(this.field)
- нормально т.как компилятор подставит именно поле класса а не что-то другое.
Во всех остальных случаях вы рискуете обратится к свойству чего-то о чем вы вообще ничего не знаете и в каких-то очень редких случаях можете таким образом случайно выдать секретную информацию.
__________________
Hell is the possibility of sanity

Старый 25.07.2012, 00:47
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
wvxvw, как объяснить появление бага сменой SDK на более высокую версию. В 3.2 работало нормально.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 25.07.2012, 02:54
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А что значит "споткнулся"?
Были баги связаные с e4x. Возможно что-то исправили.
Код
Код AS3:
.(@name === name)
почти наверняка ошибка @name - XMLList и получить тот же XMLList в том же контекте но по-другому - можно, конечно, если специально, но практический смысл этого кода вызывает подозрения. Если бы там было два равно, тогда можно было бы подумать, что делается неявное приведение типов, а так - почти наверняка такой код будет всегда false.
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
AS3 , xml , баг
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.