Как во Flash дать графическому изображению имя экземпляра (чтобы получить к нему доступ в AS)?

Новинка для прошивки. Играя с фиктивным «учебным» приложением, мы увидели, что когда мы добавляли текстовое поле к слою, Flash позволял нам дать ему имя экземпляра, которое затем было доступно нам в ActionScript для таких вещей, как установка его текста, размера или видимость.

Однако, когда мы добавили файл png, не было места для ввода имени экземпляра, поэтому я не уверен, как мы получаем доступ к этому объекту из ActionScript.

Теперь я знаю, что могу просто назначить изображение его собственному слою, чем манипулировать слоем, но в нашем случае у нас есть матрица изображений 6 x 6, которую нам просто нужно показать или скрыть по отдельности, и создать 36 слоев (в отличие от к одному слою с 36 изображениями на нем) просто кажется мне сумасшедшим!

Итак, как вы можете настроить таргетинг на определенные изображения на слое из ActionScript?


person Mark A. Donohoe    schedule 18.02.2012    source источник


Ответы (1)


Если вы планируете держать все в порядке на сцене/временной шкале, то:

Выберите изображение, нажмите «Изменить» > «Преобразовать в символ». Оттуда вы сможете превратить его в MovieClip и назначить имена экземплярам MovieClips.

ОБНОВЛЕНИЕ:
Если вы хотите иметь 36 копий одного и того же растрового изображения, с которыми можно взаимодействовать через ActionScript, вам лучше создать экземпляры всех этих экземпляров программно:

Преобразуйте растровое изображение в MovieClip, как указано выше. Этот символ теперь находится в вашей библиотеке — щелкните его правой кнопкой мыши и выберите «Свойства». В разделе «Связь ActionScript» щелкните, чтобы включить «Экспорт для ActionScript». В диалоговом окне «Класс» дайте ему имя класса, например MyBitmapClass. Теперь вы сделали этот MovieClip доступным как класс.

Чтобы создать 36 его копий на сцене программно:

var numberOfCopies:int = 36;
var myBitmaps:Array = [];

for (var i:int = 0; i < numberOfCopies; i++)
{
    var myBitmap:MyBitmapClass = new MyBitmapClass();
    addChild(myBitmap);

    myBitmaps[i] = myBitmap;
}

Конечно, все, что вы увидите, запустив это, — это «одно» растровое изображение, потому что все 36 лежат друг над другом. Чтобы переместить отдельное растровое изображение, вы можете получить доступ к его экземпляру через созданный нами массив:

//move myBitmap #5 to an x position of 200 and y position of 500;
myBitmaps[4].x = 200;
myBitmaps[4].y = 500;

(Имейте в виду, что позиции массива начинаются с 0, поэтому растровое изображение № 5 на самом деле имеет индекс 4 — 0, 1, 2, 3, 4)

person redhotvengeance    schedule 18.02.2012
comment
Сцена, да. Хронология, нет. Все изменения сцены для этого проекта будут выполняться только с помощью ActionScript. И я только что попробовал то, что вы сказали, и теперь я вижу «Экземпляр TestSymbol», но по-прежнему нигде не могу изменить имя экземпляра. Чтобы было понятнее, рассмотрим 36 копий одной графики, которыми мы хотим управлять индивидуально и программно. Вы предлагаете мне создать 36 отдельных символов? Я думал, что символ сродни классу в программировании, где вы запускаете его экземпляры, но вы все равно можете получить доступ к каждому из них по отдельности, чтобы изменить его свойства, такие как видимость. - person Mark A. Donohoe; 18.02.2012
comment
Если вам нужно 36 копий одного и того же растрового изображения, которым вы можете присвоить имена экземпляров, вы должны создать мувиклип (как я уже описал), а затем перетащить его из панели библиотеки на сцену 36 раз. Оттуда вам придется вручную назначить каждому экземпляру имя на панели свойств. Но, как я уверен, вы понимаете, именно здесь использование сцены разочаровывает и ограничивает. Вам лучше экспортировать MovieClip для ActionScript и создавать экземпляры каждого экземпляра программно. Я обновлю свой ответ этими инструкциями. - person redhotvengeance; 18.02.2012
comment
Хорошо, я должен что-то упустить, потому что, чтобы проверить это, я добавил графику прямо в сцену, а также копию символа (на основе графики) в сцену. В моей библиотеке есть оба. Однако, когда я выбираю один, я получаю «Экземпляр: Test.png», а когда я нажимаю другой, я вижу «Экземпляр: TestSymbol» (который создан из «Изменить» на «Test.png»). Однако в ни в том, ни в другом случае я не вижу места для ввода имени экземпляра (кстати, это то, что я хотел, хотя создание их программных экземпляров было бы здорово знать). - person Mark A. Donohoe; 18.02.2012
comment
Аааа! Я думаю, что то, что вы сказали, может быть неправдой. Я пропустил шаг, и хотя я создал символ из рисунка, я не преобразовал его во фрагмент ролика. Как только я это сделал, это дало мне возможность ввести имя экземпляра. Теперь, почему видеоклип в первую очередь? Это графика! Или они рассматривают графические экземпляры, которые вы хотите взаимодействовать с однокадровыми фильмами? - person Mark A. Donohoe; 18.02.2012
comment
Где вы видите текст Экземпляр: TestSymbol? Похоже, вы находитесь на панели свойств, где вы должны установить имя экземпляра. Справа от Instance of: TestSymbol должна быть кнопка Swap..., а над ней раскрывающийся список с выбранным Movie Clip, а над ним диалоговое окно для установки имени экземпляра. - person redhotvengeance; 18.02.2012
comment
Вы можете давать имена экземпляров символам только на сцене. Это ограничение работы на сцене. Ваши варианты открываются, когда вы переходите к созданию экземпляров с помощью кода. - person redhotvengeance; 18.02.2012
comment
Но это все... Я я говорю о символе на сцене! Если это графика, без имени экземпляра. Измените тип на «Moie Clip» (или даже кнопку), и я смогу установить имя. Однако не для графики, что звучит безумно для меня! Почему бы вам не идентифицировать экземпляр графика для изменения?! Хотите скриншот? (Я использую Flash CS 5.5) - person Mark A. Donohoe; 18.02.2012
comment
НАШЕЛ. Короче говоря, вы не можете назвать графический символ. См. здесь... webwasp.co.uk/tutorials /ANI---01-symbols/index.php В нем конкретно говорится о внешних файлах AS (например, которые мы используем с классом документа, и что вы не можете назвать графику, чтобы вы не могли получить к ней доступ там. Однако, вы можете с прикрепленными сценариями к символу. Отсюда и проблема. Все еще проголосовали за вас, но, пожалуйста, измените свой ответ, чтобы показать, что на самом деле вы не можете дать имя экземпляра графике (что безумие, если вы спросите меня!) - person Mark A. Donohoe; 18.02.2012
comment
О, вы говорите о графическом символе. Да, они на самом деле не принимают имена экземпляров. Вот почему я говорю преобразовать его в MovieClip. Выше я сделал небольшую ошибку - не ВСЕ символы могут иметь имена экземпляров, только мувиклипы и кнопки (я это исправлю). Но вы обнаружите, что MovieClip действительно является единственным полезным символом, и даже тогда вы, вероятно, захотите начать использовать Sprite, потому что MovieClips тяжелы. Но это ответ на другой вопрос :) - person redhotvengeance; 18.02.2012
comment
Есть шанс, что вы сможете поболтать 10 минут в чате «Flex & ActionScript»? - person Mark A. Donohoe; 18.02.2012
comment
давайте продолжим это обсуждение в чате - person Mark A. Donohoe; 18.02.2012