|
|
|||||
Регистрация: Oct 2012
Сообщений: 17
|
Элементы массива
Всем добрый вечер!
Подскажите, кто знает: -есть массив каждый элемент выбирается случайно и движется: я поместил случайный элемент с переменную создал обработчик: a.onEnterFrame = function (){ a._y += speed2;} if (distance == (a._yscale/2 + cl._yscale/2)){ delete this.onEnterFrame; } } - как мне поместить на рабочую область(сцену) копию случайно выбранного элемента, а не всех? как мне остановить клип при соприкосновении с другим клипом? a._y += speed; - задаю скорость; speed = 0; - останавливаю при соприкосновении есть какой-то другой способ остановки? Последний раз редактировалось Терпеливый; 11.02.2013 в 20:51. Причина: забыл |
|
|||||
Регистрация: Oct 2012
Сообщений: 17
|
7 объектов на сцене.по идеи они должны были бы вызываться из массива по одному, но я не знаю как это сделать
в общем виде должно быть так: -выбирается случайный элемент, делается копия элемента массива(не знаю как реализовать) -задается скорость элемента и проверяется на столкновение с объектом cl4 -если произошло столкновение(cl4) то объект должен остаться на месте -потом повторяется все заново, но плюс еще и столкновение с этими же объектами |
|
|||||
Регистрация: Sep 2005
Сообщений: 950
|
Если я правильно понял, то нужно вот так :
|
|
|||||
Регистрация: Oct 2012
Сообщений: 17
|
Спасибо огромное, lexa2000lexa, все работает, но мне надо выбрать случайный элемент массива и поместить его на сцену(чтобы он падал), при этом 6 остальных должны быть скрыты.Это возможно?Или есть какая-то альтернатива?
|
|
|||||
Регистрация: Sep 2005
Сообщений: 950
|
Попробуйте вот так:
import flash.geom.Point; var _mas:Array = new Array("cl1", "cl2", "cl3", "cl5", "cl6", "cl7", "cl8"); var speed = 2; var speed2 = 4; var speed3 = 2; function st() { var num = Math.floor(Math.random() * _mas.length); var a:MovieClip = this.attachMovie(_mas[num], "new" + _mas[num], this.getNextHighestDepth(), {_x:300, _y:100}); var b:Point = new Point(a._x, a._y); var cb4:Point = new Point(cl4._x, cl4._y); var distance:Number = Point.distance(b, cb4); trace(distance + " " + (a._yscale / 2 + cl4._yscale)); if (distance > (a._yscale / 2 + cl4._yscale)) { speed = speed2; } a.onEnterFrame = function() { a._y += speed; if (a.hitTest(cl4)) { a.removeMovieClip(); delete this.onEnterFrame; st(); } }; } st() |
|
|||||
Регистрация: Oct 2012
Сообщений: 17
|
Спасибо большое.Помогло.
как мне можно сравнить переменную с массивом объектов(if (a.hitTest(cl4))), только вместо cl4 массив _mase для определения их соприкосновения не удалить, а оставить можно элементом массива записать другой массив?если да то как? Последний раз редактировалось Терпеливый; 14.02.2013 в 00:37. Причина: вспомнил |
|
|||||
Регистрация: Sep 2005
Сообщений: 950
|
|
|
|||||
Регистрация: Oct 2012
Сообщений: 17
|
Помогло спасибо
у меня вопрос по BitmapData.hitTest var mc_1:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth()); mc_1.attachBitmap(myBitmapData, this.getNextHighestDepth()); mc_1.attachBitmap(myBitmapData, this.getNextHighestDepth()); - можно объяснить это? мы добавляем объект(mc_1) в класс BitmapData и ложем на уровень getNextHighestDepth().правильно? var destPoint:Point = new Point(myBitmapData.rectangle.x, myBitmapData.rectangle.y); rectangle.x - это же поворот по оси х. зачем вращать? это точка для мыши? var currPoint:Point = new Point(); |
|
|||||
1. Пустой мувиклип создается как контейнер для битмап даты т.к она не может отображаться без контейнера...
2. Аттач битмап дата атачит данный битмап к мувиклипу на this.getNextHighestDepth() (самую большую глубину) 3. rectangle.x это x координат квдарата. Тут нету ни 1 слова о вращении почему вдруг это вращение? |
Часовой пояс GMT +4, время: 17:39. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|