Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
310 / 93 / 6
Регистрация: 21.06.2010
Сообщений: 276
AS 3.0

Как вложить мувик в мувик?

25.06.2011, 21:53. Показов 3214. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как в AS3 сделать такое?
ActionScript 3
1
2
attachMovie ("pole","pole",1);
pole.attachMovie("fishka","fishka"+1,2);
ну и потом обратиться к этому мувику.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.06.2011, 21:53
Ответы с готовыми решениями:

Как воспроизвести импортированный swf мувик?
Как им вообще управлять, с помощью чего? Добавлено через 1 час 0 минут Объясните пожалуйста, как как захватить видеоролик в АС? Вот...

Как скрыть мувик при клике по нему?
Уважаемые программисты подскажите, пожалуйста. Во вложении swf. Сетка из мувиклипов. При клике в любом месте появляется меню. У меня...

Вставить мувик в место клика
Помогите, пожалуйста, чайнику. Имеется курсор в виде прицела. Нужно чтобы по клику мышки в место клика вставлялся мувик следа от пули...

13
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
25.06.2011, 22:05
ActionScript 3
1
2
3
4
5
var mc:YouMC=new YouMC();
addChild(mc);
var fishka:Fishka=new Fishka();
mc.addChild(fishka);
trace(mc, fishka);
0
310 / 93 / 6
Регистрация: 21.06.2010
Сообщений: 276
25.06.2011, 22:27  [ТС]
Спасибо, понял. Получается можно обратиться просто к объекту по его имени без наследования.
А как тогда сделать такую конструкцию.
ActionScript 3
1
2
3
4
5
6
attachMovie ("pole","pole",1);
for(nfishki=1;nfishki<20;nfishki++) {
newname="fishka"+nfishki;
pole.attachMovie("fishka",newname,nfishki+1);
pole[newname]._x=random(400);
}
Интересует именно такое вот создание множества дочерних мувиков внутри родительского, а потом обращение к ним. Или это нужно делать теперь for in? Да и как теперь генерировать имена мувикам?
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
25.06.2011, 22:53
ActionScript 3
1
2
3
4
5
6
7
var mc:YouMC=new YouMC();
addChild(mc);
var fishka:Fishka;
for (var i:int=0; i<20; i++){
fishka=new Fishka();
mc.addChild(fishka);
}
А для доступа заносить объекты в массив и получать их по индексу. В ас3 обращение к объекту по имени используется крайне редко.
0
310 / 93 / 6
Регистрация: 21.06.2010
Сообщений: 276
26.06.2011, 01:55  [ТС]
Бился несколько часов к ряду и ни чего не добился.
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var balls=new Array();
for (var nb=1;nb<20;nb++) {
    balls[nb]=new ball();
    addChild (balls[nb]);
    balls[nb].x=normal_random(0,400);
    balls[nb].addEventListener(Event.ACTIVATE,speed_init);
}
function speed_init(e:Event):void {
    trace (this.x);
}
 
function normal_random(l:Number, h:Number) {
    return (Math.floor(Math.random()*(h-l))+l)
}
Функция speed_init рисует мне всё время 0, хотя должна показать координату X инициализирующего слушатель объекта? Или наследование событий тоже упразднили? А как тогда быть? Уже всю голову сломал. А если я этот массив ещё и вложу родительский мувик, то вообще полная и бесповоротная засада.

Добавлено через 29 минут
Разобрался . Спасибо за подсказки. AS3 ни капли не похож на AS2, только внешне, как и c++ и Java, а так ничего общего, разные языки. Поэтому и подход абсолютнейше различный. Надо забывать начисто AS2 когда пишешь на AS3. Моя ошибка была как раз в не понимании этого.
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var speedX=new Array();
var speedY=new Array();
var balls=new Array();
 
for (var nb=1;nb<20;nb++) {
    balls[nb]=new ball();
    addChild (balls[nb]);
    balls[nb].x=normal_random(50,450);
    balls[nb].y=normal_random(50,350);
    speedX[nb]=normal_random(0,2)*2-1;
    speedY[nb]=normal_random(0,2)*2-1;
}
stage.addEventListener(Event.ENTER_FRAME,balls_move);
function balls_move(e:Event):void {
    for (nb=1;nb<20;nb++) {
        balls[nb].x+=speedX[nb];
        if (balls[nb].x<0 || balls[nb].x>500) {
            speedX[nb]=speedX[nb]*(-1);
        }
        balls[nb].y+=speedY[nb];
        if (balls[nb].y<0 || balls[nb].y>350) {
            speedY[nb]=speedY[nb]*(-1);
        }
    }
}
function normal_random(l:Number, h:Number) {
    return (Math.floor(Math.random()*(h-l))+l)
}
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
26.06.2011, 02:10
Ага. Теперь работа над ошибками.
В цикле лучше не обращаться к элементам массива, а к локально созданной переменной.
Однородные объекты помещать лучше в контейнер, чтоб потом вешать слушатель не на stage, а на контейнер.
При создании слушателя использовать мягкие ссылки.
Код писать не в кадрах, а в классах.
Количество элементов массива занести в переменную.
Предусмотреть вариант, когда слушатель окажется бесполезным.
0
310 / 93 / 6
Регистрация: 21.06.2010
Сообщений: 276
26.06.2011, 09:50  [ТС]
В цикле лучше не обращаться к элементам массива, а к локально созданной переменной.
Почему? И пример если можно, а то не очень пока догоняю.

Однородные объекты помещать лучше в контейнер, чтоб потом вешать слушатель не на stage, а на контейнер.
Ну это да, как раз к этому и стремился, просто упростил, что бы не путались с родительскими объектами.

При создании слушателя использовать мягкие ссылки.
А можно пример?
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
26.06.2011, 11:02
Пример был выше. Потому что так вы обращаетесь и к массиву, и к одному из его элементов, а иначе сразу к объекту.
Почитайте официальную доку, там много интересного.
ActionScript 3
1
addEventListener(MoueseEvent.CLICK, onClick, false, 0, [B]true[/B]);
0
310 / 93 / 6
Регистрация: 21.06.2010
Сообщений: 276
27.06.2011, 13:34  [ТС]
Спасибо. В основном только официальную доку и читаю. Ещё бы понимать всю это терминологию.
useCapture:Boolean (default = false) — Определяет, работает ли прослушиватель в фазе захвата или в целевой фазе и в фазе восходящей цепочки. Если значение useCapture равно true, прослушиватель обрабатывает событие только во время фазы захвата, но не во время целевой фазы или фазы восходящей цепочки. Если значение useCapture равно false, то прослушиватель обрабатывает событие только в целевой фазе или фазе восходящей цепочки.
Что за фазы и с чем их едят?
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
27.06.2011, 20:00
http://help.adobe.com/ru_RU/as... -7e4f.html
0
310 / 93 / 6
Регистрация: 21.06.2010
Сообщений: 276
30.06.2011, 16:24  [ТС]
Вот поглядите такие пирожки получились:

ActionScript 3
1
2
3
4
5
6
for (var n=1;n<20;n++) {
var balls=new ball();
addChild(balls);
}
 
stop();
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package {
    import flash.display.MovieClip;
    import flash.events.*;
    
    public class ball extends MovieClip {
        private var speed:int;
        private var speed_x:int;
        private var speed_y:int;
        private var nf=new normalFunctions();
            
        public function ball() {
            speed=10;
            speed_x=(nf.randomize(0,2)*2-1)*speed;
            speed_y=(nf.randomize(0,2)*2-1)*speed;
            x=nf.randomize(20,450);
            y=nf.randomize(20,350);
            this.addEventListener(Event.ENTER_FRAME, ballMove);
        }
        
        private function ballMove(e:Event) {
            x+=speed_x;
            y+=speed_y;
            if (x<0 || x>500) {
                speed_x*=-1;
            }
            if (y<0 || y>350) {
                speed_y*=-1;
            }
        }
    }
}
ActionScript 3
1
2
3
4
5
6
7
8
9
package {
    public class normalFunctions {
        public function normalFunctions() {
        }
        public function randomize(l:Number, h:Number) {
            return (Math.floor(Math.random()*(h-l))+l)
        }
    }
}
Это правильно теперь?
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
30.06.2011, 21:54
Зачем в 1м блоке кода stop();? Я надеюсь вы не в кадрах пишите.
Объявление переменной ball вынести из цикла. И не понятно какого она типа.
Зачем создавать класс normalFunctions ради одной, ни к чему не привязанной функции?
Классы называть нужно с большой буквы. Конструктор должен содержать минимум кода.
Мягкие ссылки лучше использовать всегда, кроме случаев, когда они плохо влияют на работу программы.
Метод randomize и ballMove ничего не возвращает (этого не видно). У вас компилятор не ругается? Там же нет точки с запятой.
Значения 0, 350, 500, 10 есть смысл поместить в константы.
0
310 / 93 / 6
Регистрация: 21.06.2010
Сообщений: 276
01.07.2011, 11:51  [ТС]
Зачем в 1м блоке кода stop();? Я надеюсь вы не в кадрах пишите.
Это я в кадре написал, а остальное в классах. Я дизайнер, а не программист , я ещё далёк от того что бы писать код в scite, всего полторы недели изучаю ас3, а ас2 изучал лет 7 назад и то поверхностно. Мне пока очень трудно вылазить из привычного IDE.
Объявление переменной ball вынести из цикла. И не понятно какого она типа.
Ну да действительно не логично - протупил. А какого она типа? Извиняюсь, но мне не понятно. тип Мувик что ли?
Зачем создавать класс normalFunctions ради одной, ни к чему не привязанной функции?
Для тренировки. Я представил будто у меня там куча функций и надо создать отдельный класс и к нему обратиться.
Классы называть нужно с большой буквы. Конструктор должен содержать минимум кода.
Я ещё путаюсь, конструктор у меня где? Вот это?
ActionScript 3
1
2
3
4
5
6
7
8
                public function ball() {
                        speed=10;
                        speed_x=(nf.randomize(0,2)*2-1)*speed;
                        speed_y=(nf.randomize(0,2)*2-1)*speed;
                        x=nf.randomize(20,450);
                        y=nf.randomize(20,350);
                        this.addEventListener(Event.ENTER_FRAME, ballMove);
                }
Метод randomize и ballMove ничего не возвращает (этого не видно). У вас компилятор не ругается? Там же нет точки с запятой.
В смысле? ballMove не возвращает, а randomize возвращает значение. А где надо ставить точку с запятой там? У меня Flash CS3, компилятор не ругается, могу показать swf.

Извиняюсь что засыпаю вопросами, но хочу разобраться до каждой точки.
0
Модератор
 Аватар для TanaTiX
2931 / 1790 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
01.07.2011, 22:34
Цитата Сообщение от CalebElT Посмотреть сообщение
Это я в кадре написал, а остальное в классах.
Зачем привыкать к плохому? Что мешает писать ВЕСЬ код в классах?
Цитата Сообщение от CalebElT Посмотреть сообщение
А какого она типа?
ActionScript 3
1
var ball:[B]Ball[/B]=new Ball();
Цитата Сообщение от CalebElT Посмотреть сообщение
Я представил будто у меня там куча функций и надо создать отдельный класс и к нему обратиться.
Вы лучше потренируйтесь в понимании ООП, не смотря на простоту это бывает гораздо сложнее. Есть объект, у него есть свойства. Все, что вы пихаете в объект должно быть для него логичным. Ложка должна быть металлической или деревянной (свойство материала), помещаться в руке (размер), должна уметь черпать (ее метод), а вот время показывать должен совсем другой объект.

Цитата Сообщение от CalebElT Посмотреть сообщение
Я ещё путаюсь, конструктор у меня где?
Конструктор - это, грубо говоря, тот метод экземпляра класса, который всегда вызывается при его создании. Он всегда имеет то же имя, что и сам класс и ничего не возвращает.
Цитата Сообщение от CalebElT Посмотреть сообщение
ballMove не возвращает, а randomize возвращает значение
Да, возвращают, но этого не видно.
Должно быть примерно так:
ActionScript 3
1
2
private youMethodGetNumber():Number{//...
private youMethod():void{//...
Цитата Сообщение от CalebElT Посмотреть сообщение
компилятор не ругается
проверьте в настройках чтоб стоял режим StrictMode.

ЗЫ.

Цитата Сообщение от CalebElT Посмотреть сообщение
Я дизайнер, а не программист
Надеюсь хороший
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.07.2011, 22:34
Помогаю со студенческими работами здесь

Мувик с as1 flash lite 1.1 для мобильных.
Всем привет. Подскажите кто знает,как создать простой мувик с as1 flash lite 1.1 . Пытался найти сам, но не нашел. Мне надо разобраться как...

Отловить нажатие мышкой на мувик без курсора-рука
Работаю с AS2. На мувик вешаю: on(press){ _root.DeselectAll(); } Все работает но курсор становится &quot;рукой&quot; (как на...

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

Мувик по задаче
Есть задача по которой нужно создать мувик. Ума не приложу как это сделать. Механическая колебательная система состоит из цилиндра...

Как вложить функцию?
Привет! Сори, я не программист. На сайте WP пытаюсь соединить плагин перевода и тему. Есть такая строка &lt;?php printf( __( '&lt;a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru