Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как можно создать новый экземпляр символа? (http://www.flasher.ru/forum/showthread.php?t=189323)

XMON 11.12.2012 18:14

как можно создать новый экземпляр символа?
 
как можно создать новый экземпляр символа?

пример:
создал символ в координатах x = 0, y = 0 и создал ещё один такой символ в новых координатах.
вот код в котором мне это надо:

Код AS3:

import flash.events.Event;
 
var rooms:Array = new Array
var cybers
var no_x:Number = new Number
var no_y:Number = new Number
no_x = 0
no_y = 0
 
rooms.push (new room100x100)
rooms.push (new room100x50)
rooms.push (new room150x50)
rooms.push (new room50x50)
 
addEventListener(Event.ENTER_FRAME, arrangement_of_rooms)
 
function arrangement_of_rooms(e:Event):void
{
        cybers = rooms[Math.floor( Math.random() * rooms.length )]
        addChild (cybers).x = no_x; cybers.y = no_x
no_x ++
no_y ++
}


bav 11.12.2012 19:01

Цитата:

как можно создать новый экземпляр символа?
Код AS3:

var symbol:Symbol = new Symbol();

Мама дорогая, вы по каким книгам AS3 учили?
Код AS3:

import flash.events.Event;
// Для создания нового массива можно использовать литерал [],
// а если используете оператор new, то не забывайте про скобки.
var rooms:Array = [];
// Не забывайте указывать тип переменных
var cybers:MovieClip;
// Тоже можно сразу использовать литералы для инициализации переменных
var no_x:Number = 0;
var no_y:Number = 0;
 
// Снова скобки конструктора и точки с запятыми в конце строк
rooms.push (new room100x100());
rooms.push (new room100x50());
rooms.push (new room150x50());
rooms.push (new room50x50());
 
addEventListener(Event.ENTER_FRAME, arrangement_of_rooms);
 
function arrangement_of_rooms(e:Event):void
{
        // Берем случайный клип из rooms
        cybers = rooms[Math.floor( Math.random() * rooms.length )];
        // Помещаем его наверх списка отображения
        // и меняем ему координаты
        addChild (cybers).x = no_x;
        cybers.y = no_y;
        no_x++;
        no_y++;
}

В итоге четыре клипа ползут вниз вправо. Вы этого добиваетесь?

XMON 11.12.2012 20:01

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

var no_x:Number = 0;

Цитата:

Мама дорогая, вы по каким книгам AS3 учили?
по видео урокам от esyflash. По вашему мнению, это хорошие уроки?

bav 11.12.2012 20:08

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

Hauts 11.12.2012 20:16

Цитата:

а если используете оператор new, то не забывайте про скобки
Это же не обязательно. Но со скобками желательно :)

caseyryan 12.12.2012 10:42

Цитата:

по видео урокам от esyflash. По вашему мнению, это хорошие уроки?
Возможно и есть какие-то уроки, на которые можно обратить внимание новичку, но в основном там ужас.
Как-то ради интереса глянул несколько, честно сказать, поржал от души ) И кстати комментарии там часто довольно красноречиво характеризуют содержание уроков.
Лучше почитать книжки, чем смотреть эти уроки.
Видео уроки есть неплохие, но такие я встречал только англоязычные, созданные профессионалами. Например от lynda.com или digitaltutors и еще парочка организаций.

XMON 12.12.2012 13:23

Цитата:

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

Добавлено через 6 минут
вот пример того, как это было реализовано с помощью классов (мне надо без классов)
Код AS3:

package {
        import flash.display.MovieClip;
        public class Container extends MovieClip
        {
                private var figures:Array = new Array();
                public function Container(){
                        var figure:Figure;
                        for(var i:int=0;i<10;i++){
                                figure = new Figure();//создаем библиотечный символ, которому пролинковали класс Figure
                                figure.x = i*10;
                                figure.y = i*10;
                                addChild(figure);//добавляем в дисплей лист фигуру
                                figures.push(figure);//запоминаем фигуры в массиве
                        }
                }
        }
}


Aquahawk 12.12.2012 14:25

Цитата:

мне надо без классов
Нет не надо. Без классов - *****код. Учитесь сразу нормально. Профи может сыграть полёт шмеля на табуретке, но учась на табуретке профи не станешь.

XMON 12.12.2012 15:04

Цитата:

Нет не надо. Без классов - *****код. Учитесь сразу нормально. Профи может сыграть полёт шмеля на табуретке, но учась на табуретке профи не станешь.
поверьте, я бы с удовольствием начал писать код в классах, но на это нужно время, а у меня его нет. у меня учёба, конференции и многое другое, от всего этого я освобожусь только в конце февраля, вот тогда я начну изучать классы. моя недавняя попытка их изучить провалилась, в связи с нехваткой времени.

Aquahawk 12.12.2012 16:59

Цитата:

я бы с удовольствием начал писать код в классах, но на это нужно время
Неправда. Удосужьтесь прогуглить этот вопрос. Обсуждалось ровно столько раз сколько здесь появлялись новые люди.


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

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