|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2015
Сообщений: 8
|
Разместить на сцене и тиражировать объект из библиотеки с помощью кода
Как разместить и тиражировать объект из библиотеки на сцену с помощью команд в as.?
1. При чем, объекты должен тиражироваться заданное кол-во раз; 2. Размещаться в ряд с определенным интервалом; 3. И всякий раз при нажатии кнопки, чтоб рандомно менялся состав этих объектов; |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
а что конкретно не ясно? Как создать объект из библиотеки?
Присваиваем ему в библиотеке linkage ID и бежим читать про оператор new после создания добавляем его на сцену и присваиваем требуемые координаты и прочие аттрибуты. Чтоб что-то происходило при нажатиях клавиатуры читаем про слушатели Последний раз редактировалось undefined; 28.04.2015 в 10:08. |
|
|||||
Регистрация: Apr 2015
Сообщений: 8
|
Я попытаюсь уточнить вопрос.
1. Мне не понятно как на сцену из библиотеки вытащить объекты и расположить их в ряд (неужели каждому нужно задавать отдельные координаты в ручную?) 2. И что написать для того, чтоб эти объекты в следующий раз (при нажатии кнопки) выводились на сцену по-другому (тоже в ряд, но в другой "рандомной" последовательности) То есть, мне бы понять с каким типом данных нужно работать, чтоб совершить эти действия, какие функции/методы/события/условия/циклы для этого нужны. P.S. я совсем новичок. |
|
|||||
1) Нет, можно воспользоваться циклами и математикой.
Вытащить объекты можно с помощью new ИмяКласса. Разместить в ряд можно примерно так(создаём 10 кругов в ряд): for(var i:int = 0; i < 10; i ++) { var ball:Shape = new Shape(); ball.graphics.beginFill(0xFFFF00); ball.graphics.drawCircle(0, 0, 20); ball.x = i * (40 + 5); addChild(ball); } for(var i:int = 0; i < 10; i ++) { var ball:Ball = new Ball(); ball.x = i * (40 + 5); addChild(ball); } Например?
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Apr 2015
Сообщений: 8
|
Например:
В библиотеке лежит 3 шарика, разных цветов, их нужно вытащить на сцену, разместив в ряд 10 штук, т.е. они будут повторяться, типа : 1. желтый; 2. красный; 3. синий; 4. красный; 5. красный; 6. желтый; 7. синий; 8. синий; 9. желтый; 10. красный; Дальше, есть кнопка, при нажатии на которую эти шарики меняют свои позиции в произвольном порядке, (опять же в ряд 10 штук, но меняются по цветам местами друг с другом) Вот такая задача. Помогите |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
а попробуйте почитать что-нибудь для начала.И там если будет не понятно спрашивайте что не выходит.Для начала спросите у гугла что-нибудь типа actionScript 3.0 для начинающих/чайников.
|
|
|||||
[+1 09.05.15]
Регистрация: Jan 2015
Сообщений: 113
|
Старался сделать как можно проще -
package { import fl.controls.Button; import flash.display.DisplayObject; import flash.display.Graphics; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class Main extends Sprite { private var _allRects:Array; public function Main() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private const RED_COLOR:uint = 0xBA2C2C; private const GREEN_COLOR:uint = 0x5CC032; private const BLUE_COLOR:uint = 0x3538C8 private const RECT_WIDTH:Number = 100; private const RECT_HIEGHT:Number = 100; private const INDENT_HORIZONTAL:Number = 10; private const INDENT_VERTICAL:Number = 10; private function init(event:Event=null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // вот эта часть кода Вам не нужна - <<< начало var button:Button = new Button(); button.label = 'click me'; super.addChild(button); button.stage.addEventListener(MouseEvent.CLICK, stage_clickHandler); // вот эта часть кода Вам не нужна - <<< конец this._allRects = []; // наполняем массив квадратиками разных цветов // я создаю квадраты так - this.createRect(RECT_WIDTH, RECT_HIEGHT, RED_COLOR) // потом добавляю их в список отображения super.addChild // а потом в массив this._allRects.push // три красных this._allRects.push(super.addChild(this.createRect(RECT_WIDTH, RECT_HIEGHT, RED_COLOR))); this._allRects.push(super.addChild(this.createRect(RECT_WIDTH, RECT_HIEGHT, RED_COLOR))); this._allRects.push(super.addChild(this.createRect(RECT_WIDTH, RECT_HIEGHT, RED_COLOR))); // три зеленых this._allRects.push(super.addChild(this.createRect(RECT_WIDTH, RECT_HIEGHT, GREEN_COLOR))); this._allRects.push(super.addChild(this.createRect(RECT_WIDTH, RECT_HIEGHT, GREEN_COLOR))); this._allRects.push(super.addChild(this.createRect(RECT_WIDTH, RECT_HIEGHT, GREEN_COLOR))); // три синих this._allRects.push(super.addChild(this.createRect(RECT_WIDTH, RECT_HIEGHT, BLUE_COLOR))); this._allRects.push(super.addChild(this.createRect(RECT_WIDTH, RECT_HIEGHT, BLUE_COLOR))); this._allRects.push(super.addChild(this.createRect(RECT_WIDTH, RECT_HIEGHT, BLUE_COLOR))); this.reset() } private function stage_clickHandler(event:MouseEvent):void { this.reset(); } private function reset():void { this._allRects = this.mix(this._allRects); const COLUMNS:int = 3; const ROWS:int = 3; const START_X:Number = super.stage.stageWidth / 2 - (COLUMNS * RECT_WIDTH + (INDENT_HORIZONTAL * (COLUMNS - 1))) / 2; const START_Y:Number = super.stage.stageHeight / 2 - (ROWS * RECT_HIEGHT + (INDENT_VERTICAL * (ROWS - 1))) / 2; const STEP_HORIZONTAL:Number = RECT_WIDTH + INDENT_HORIZONTAL; const STEP_VERTICAL:Number = RECT_HIEGHT + INDENT_VERTICAL; var rect:Sprite; var k:int = 0; for (var i:int = 0; i < ROWS; i++) { for (var j:int = 0; j < COLUMNS; j++) { rect = this._allRects[j + k]; rect.x = START_X + STEP_HORIZONTAL * j; rect.y = START_Y + STEP_VERTICAL* i; } k += j; } } private function mix(array:Array):Array { var length:int = array.length; var temporaryValue:Sprite; var randomIndex:int = 0; while (length-- > 0) { randomIndex = int(Math.random() * length); temporaryValue = array[length]; array[length] = array[randomIndex]; array[randomIndex] = temporaryValue; } return array; } private function createRect(width:Number = 20, hieght:Number = 20, color:uint = 0x000000):Sprite { var rect:Sprite = new Sprite(); var graphics:Graphics = rect.graphics; graphics.beginFill(color); graphics.drawRect(0, 0, width, hieght); graphics.endFill(); return rect; } } } |
|
|||||
Регистрация: Apr 2015
Сообщений: 8
|
Ну ничего себе!
Огромное Вам спасибо за проделанную работу!!! (вместо меня) Мне теперь только разобраться, вникнуть и проанализировать остается. Спасибо! |
Часовой пояс GMT +4, время: 04:58. |
|
« Предыдущая тема | Следующая тема » |
|
|