Попытка получить доступ к информации .source изображений в скрипте действия - по какой-то причине она не отображается

Я работаю над проектом (используя Flash Builder 4.5), в котором пользователь может щелкнуть одно из нескольких изображений, чтобы выполнить действие. Все изображения загружаются в массив UIComponents через actionscript.

У меня есть частная переменная следующим образом:

private var _selectedChild:UIComponent;

Который отслеживает, какой UIComponent в данный момент «выбран» (был ли нажат последний элемент).

Я просто хочу показать предупреждение при нажатии на изображение, отображающее его идентификатор и имя исходного файла.

Alert.show("Current id: " + _selectedChild.id + " -- filename: " + _selectedChild.source);

Идентификатор получается легко с _selectedChild.id, но нет такой вещи, как .source - я просмотрел весь список возможных переменных, которые дает мне eclipse, и я не могу понять, какая из них будет отображать URL-адрес или источник. Я чувствую, что могу что-то упустить - кто-нибудь знает, как получить эту информацию из UIComponent?

Это соответствующий mxml:

<dp:Test id="test" width="100%" height="100%" >
        <mx:Image id="i1" source="images/i1.jpg"/>
        <mx:Image id="i2" source="images/i2.jpg"/>
    </dp:Test>

Любая помощь очень ценится.


person Anthony    schedule 02.11.2011    source источник


Ответы (2)


Если я правильно понимаю ваш код, вам нужно сначала преобразовать UIComponent в изображение:

var image:Image = _selectedChild as Image;
if (!image) trace("Nothing selected or the child is not an image");
Alert.show("Current id: " + image.id + " -- filename: " + image.source);
person laurent    schedule 02.11.2011
comment
Спасибо! Я новичок в flex, и это очень помогло. - person Anthony; 02.11.2011

Вы передаете объект mx:Image в базовый UIComponent, у которого нет свойства «источник». Либо оставьте _selectedChild неоднозначным типом *, либо определите его как mx.controls.Image. Если вы переключитесь на искру, используйте spark.components.Image.

В качестве альтернативы, чтобы быть в безопасности при использовании неоднозначного типа, вы можете выполнить проверку на основе свойства:

if(_selectedChild.hasOwnProperty("source"))
{
    // do stuff
}
person stat    schedule 02.11.2011