Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ActionScript 3.0 и Слои (Layers) (http://www.flasher.ru/forum/showthread.php?t=202812)

Fogflasher 12.08.2013 15:37

ActionScript 3.0 и Слои (Layers)
 
Правильно ли я понимаю, что в экшнскрипт никто не работает со слоями?
То есть, слоёв не существуют для этого языка: нет ни свойств, ни методов, ни классов тождественных им.

И если есть, например, мувиклип с шестью слоями, на каждом из которых что-то есть, то он разбивается на 6 отдельных мувиклипов, и они уже обрабатываются каждый программно.

А если слоёный мувик имеет объекты, и его разбивать нельзя, то надо просто присвоить этим объектам классы и обращаться к ним непосредственно, опять же, игнорируя слоёность.

Tails 12.08.2013 15:51

Слои - удобный интсрумент для определения иерархий отображения. В конечном счёте, все отображаемые объекты оказываються в общем списке отображения родительского объекта.
http://help.adobe.com/ru_RU/FlashPla...Container.html

AlexLucas 12.08.2013 15:54

Слои есть только во Flash IDE, в as3 у каждого элемента разве что есть свой z-индекс. Но можно написать и свою реализацию слоёв в своём же приложении.
Цитата:

то надо просто присвоить этим объектам классы имена
Если внутри мувика mc1 есть мувик mc2, то обращаться к нему надо будет так
Код AS3:

mc1.mc2

, при условии что mc1 и mc2 это имена (instance name) этих мувиков. Если вы это имели в виду под "слоёностью".
Если во втором параграфе есть вопрос, я его не понял.

Fogflasher 12.08.2013 16:11

Tails, просмотрел свойства класса, ну там вроде нет ничего со словом layers, то есть обходимся значениями индекса.

AlexLucas, Не совсем понимаю, почему вы зачеркнули слово классы.
Ведь если например я создал в библиотеке мувиклип Tw1, и пролинковал его к классу, то я могу управлять им как-то так:
Код AS3:

private var tw1:Tw1;
tw1 = new Tw1();
tw1.x = 100;
tw1.y = 100;
addChild(tw1);

В данном случае я же именно имя класса присвоил объекту, а не имя...
Если вы имеете ввиду имя инстанции. Но имя инстанции это, насколько я понимаю, либо:
1. вот это: private var tw1:Tw1;
2. либо вручную указанное для мувиклипа <Instance Name>.
Но это одно и тоже, разницы же нет, вроде. (Впрочем, возможно мы говорим об одном и том же).

Цитата:

Если вы это имели в виду под "слоёностью".
Если во втором параграфе есть вопрос, я его не понял.
Ну имелось ввиду, что есть например 6 слоев (layers) и на каждом свой мувиклип.
Выходит, обращение к каждому, обычное, никак не связанное с фактом что он на каком-то слое.

P.S. За хинт с вложенностью мувиков спасибо что напомнили, я еще не экспериментировал с доступом к различным вариациями этого плана.

belv 12.08.2013 16:19

Понятия layers в AS3 нет, есть понятие глубина .Для управления глубиной есть несколько методов, например addChild добавляет визуальный объект с самым высоким индексом глубины.Смотрите методы DisplayObjectContainer.

AlexLucas 12.08.2013 16:46

Цитата:

Если вы имеете ввиду имя инстанции. Но имя инстанции это, насколько я понимаю, либо:
1. вот это: private var tw1:Tw1;
2. либо вручную указанное для мувиклипа <Instance Name>.
Две разные вещи.
1) это ссылка на объект (может быть сколько угодно штук)
Код AS3:

private var objectLink:Object = {name:'myObject', x:0, y:0 ....} //objectLink это ссылка
private var objectLinkTwo:Object = objectLink; //ещё одна ссылка на тот же обжект созданный выше

2) это имя объекта (свойство name - оно одно такое у объекта)

Создавать на каждый объект по классу это не правильно. Класс это как шаблон по которому создаются объекты. Вы же не будете для каждой кнопки создавать по классу. Есть класс - Button (есть и другие естественно), и уже пользуясь им вы создаёте экземпляры кнопок.
У меня не установлен флеш IDE сейчас, точно не могу сказать что там и как с библиотекой, не помню.

Да, слои только в IDE.

SvetozarPNZ 12.08.2013 17:38

На мой взгляд термин layer относится к визуальному дизайну, а не к программированию. Вы пишете
Цитата:

в экшнскрипт никто не работает со слоями?
Словно AS 3 какой-то ограниченный. У него есть средства для работы с z-последовательностью объектов, что аналогично модели слоев.

Например, если создать в среде Flash два слоя; в одном нарисовать мувиклип с именем layer1, в другом - мувиклипы с именами layer2_1 и layer2_2; затем в коде написать команды

Код AS3:

trace(getChildIndex(layer1));
trace(getChildIndex(layer2_1));
trace(getChildIndex(layer2_2));

то можно увидеть z-индексы объектов. Это слои в понимании языка AS, а не в визуальном представлении дизайнерской среды.

Fogflasher 12.08.2013 17:40

Tails, AlexLucas, belv, SvetozarPNZ, по слоям в целом понятно, благодарю за разъяснения.

Цитата:

Создавать на каждый объект по классу это не правильно.
Странно. Ну вот например есть три созданные вручную мувиклипа: звезда, эллипс, квадрат.
Причем их на стэйдже нет, они только в библиотеке.

Как же тогда быть, если не создавать класс для каждого?
Или может быть прописать им всем некий общий класс: Shape1, и... как-тогда обращаться к каждому экземпляру?
Имен инстанций у нас еще нет, и как отличить звезду от эллипса, юзая только Shape1 - непонятно.

Можно, конешно вручную помесить все три на стэйдж, вручную же прописать им <Instance name>, но...
Что-то здесь не так, наверняка можно как-то проще и чисто кодом всё разрулить.

belv 12.08.2013 18:25

В библиотеке нажимаете правой кнопкой мыши на символ, выбираете popeties.В свойствах ставите галочку Export for ActionScript, в поле Class пишите имя класса Star и жмете ok.
После чего в коде Вы уже можете создавать их экземпляры и добавлять на сцену.
Код AS3:

var star = new Star();
addChild(star);
var elipse = new Elipse();
addChildAt(elipse,0);

Так вот элипс будет под звездой.

Котейка 12.08.2013 18:38

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

А если слоёный мувик имеет объекты, и его разбивать нельзя, то надо просто присвоить этим объектам классы и обращаться к ним непосредственно, опять же, игнорируя слоёность.
На что и получили ответ
Цитата:

надо просто присвоить этим объектам имена
Потом говорите что они не в мувике, а в библиотеке. Это все-таки разные вещи :)
Если есть в библиотеке некий мувик, а в него вложены другие, то при создании экземпляра этого мувика вы сможете к ним обращаться внутри клипа так же как, если бы он изначально лежал на сцене.
Имелось ввиду, что нет смысла создавать свой класс, для каждого объекта внутри мувика экземпляр которого не будет создаваться в коде отдельно и существовать как самостоятельный объект.


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

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