Всього залишено коментарів: 30

seo
Листопад 6, 2010 о 11:04

цікаво й доступно до читача. Вчимо ActionScript 3

Рома
Листопад 28, 2010 о 00:35

спс.

symfony
Грудень 7, 2010 о 11:03

Ухти)
В грі можна використати)
Кидаєш гранату, а воно – баХ!

Микола
Грудень 14, 2010 о 14:11

Мабуть, трохи незакiнчений урок. Ми ж повиннi десь видалити непотрiбнi вже уламки зi сцени?

Ярослав Федорак
Грудень 15, 2010 о 10:22

Якщо ти про дітей (children) – то дійсно, після програвання анімації їх потрібно видаляти, щоб не перевантажувати пам’ять, якої завжди не вистачає. Про видалення дітей буде детально написано в окремому уроці.

roman
Липень 5, 2011 о 11:36

Як варіант, видалення уламків можна проводити так:
1 створюємо пустий кліп.
2 в цьому пустому кліпі динамічно розміщуємо задуману анімацію вибуху.
3. після того, як уламки вийшли за межі екрану, видаляємо наш кліп, що містить всі діти(chaild)
Так нормально?

Ярослав Федорак
Липень 5, 2011 о 11:39

Цілком.

R96
Липень 28, 2011 о 16:10

створюю анімацію з елементами math.random. через те що вони мають додаватись безперервно і вилітати за межі сцени їх з кожною секундою стає більше що призводить до перегрузки системи.
питання:
як перевірити чи вийшли уламки за межі сцени і тоді їх видалити? наперед спасибі

Ярослав Федорак
Липень 28, 2011 о 16:15

Перевірити, що вийшли за межі сцени можна за координатами. В циклі перевіряєш, чи знаходиться уламок в межах сцени. Якщо ні – видаляєш. Мабуть, напишу окрему статтю про видалення об’єктів, які більше не будуть використовуватися.

R96
Липень 28, 2011 о 16:50

якщо я правильно зрозумів то перевірку треба робити в тому ж циклі що й створення об”єктів так?
конструкція оператора if
if (part[i].x990 || part[i].y75){
removeChild(part[i]);
}
розміри сцени 990х75
нічого не виходить видалення не відбувається(

R96
Липень 28, 2011 о 16:51

if (part[i].x990 || part[i].y75){
removeChild(part[i]);
}*

R96
Липень 28, 2011 о 16:52

знаки більше, не відобразились в постах вище. сорі за флуд

Ярослав Федорак
Липень 28, 2011 о 16:58

Ні, не в тому ж циклі. Вам потрібно створити подію Enterframe (виконується кожен кадр) і в ній перевіряти. Бо цикл в наведеному коді виконується тільки один раз – коли ви тиснете на кнопку.

Крім того вихід за сцену відбувається з обох сторін, тому, якщо координата 0 < X > 990 – тоді частинка знаходиться за сценою. Так само – 0 < Y > 75 – значить частинка теж за межами сцени.

Окрім власне видалення об’єктів варто присвоювати їм значення null, щоб не зберігалися в пам’яті.

І якщо ви використовуєте приклад із цієї статті, то більшість частинок ніколи не вийдуть за рамки сцени. Вони просто стануть невидимими (але знаходитимуться на сцені)

R96
Липень 28, 2011 о 17:09

на рахунок виходу з всіх сторін це так, просто зараз працюю хоча б над одною і те не виходить..
проблема в тому що створення нових екземплярів відбувається на кліком миші а якраз ентерфреймом (потрібно щоб вони безперервно добавлялись)
ось код
var part: Array = [];

stage.addEventListener (Event.ENTER_FRAME, explode);

function explode (e:Event):void
{

for (var i:int=0; i990){
removeChild(part[i]);
}
}
}
спасибі що копаєтесь у моїй тупизні чи не досконалості)

R96
Липень 28, 2011 о 17:12

змінило весь коментар (обрізало), тому там все не так як насправді.. ок буду сам трудитись дякую за хелп)

Aleot
Вересень 22, 2011 о 09:34

У меня возникла проблема:

выдает ошибку в строчке part[i] = new movingPart;

пишет мол Call to a possibly undefined method movingPart.

заранее признателен за помощь.

Ярослав Федорак
Вересень 22, 2011 о 09:56

Ви праві, в код закралася помилка. Потрібно не
part[i] = new movingPart;
а
part[i] = new movingPart();

Aleot
Вересень 22, 2011 о 10:07

Ничего не выходит. Выдает ту же самую ошибку..((
Может из за того что у меня CS3, или не имеет значения?

Ярослав Федорак
Вересень 22, 2011 о 10:12

Ні, це не має значення. Головне, щоб ви правильно вибрали мову при створенні проекту (AS3, а не AS2).

Схоже, що ваш код не бачить кліпу movingPart. Перевірте, чи частинка є в бібліотеці, чи проставлена галочка Export for ActionScript і чи правильно написане ім’я класу movingPart.

Aleot
Вересень 22, 2011 о 10:20

Да все проставлено правильно и язык тоже выбран правильно..
Почему то не видит символ из библиотеки..
Но если его поместить на сцену, за приделы рабочей области, начинает работать, хотя не так как хотелось бы ( после клика анимация не останавливается и повторяется в том месте непрерывно).

Ярослав Федорак
Вересень 22, 2011 о 10:27

щоб анімація зупинялася потрібно в саму шкалу часу кліпу в кінці (коли частинку вже не видно) вставити одну стрічку: stop();
В третьому пункті про це написано. При тесті анімації вона повинна програтися один раз і зупинитися.

А чому у вас не “підхоплюється” символ із бібліотеки – мені важко сказати. Потрібно бачити сам файл і код.

Aleot
Вересень 22, 2011 о 10:40

В любом случае спасибо за помощь.
Благодаря вам много чего полезного узнал.

roman
Вересень 22, 2011 о 13:55

На рахунок видалення уламків, щоб неперевантажувалась память. Можна не контролювати вихід уламків за межі екрану, а просто прибирати їх через певний час після початку вибуху (по події таймеру, який знищує всі уламки і сам себе).

Ярослав Федорак
Вересень 22, 2011 о 14:16

Найпростіше – повісити слухач події на кліп уламка і коли той закінчив програвання – просто видаляти його.

Si7Ro
Лютий 10, 2012 о 00:55

Если у кого бьет ошибку part[i] = new movingPart();
пробуйте так part[i] = new movingpart();

К
Серпень 26, 2012 о 23:28

Крутий урок. Дякую.

Alex80
Березень 21, 2013 о 17:43

Питання
1) Яка різниця між:
part[i].x = e.stageX;
part[i].y = e.stageY;
та (з наступного урока):
part[i].x = mouseX;
part[i].y = mouseY;
Код виконує те саме, тобто реагує на координати мишки на сцені.
2) Не збагну, яким чином (Math.random()+0.8)/1.5 – задає границі від 0.5 до 1.2 =)

Ярослав Федорак
Березень 21, 2013 о 22:55

Alex80,
1. Різниця у логіці: в першому випадку ви позиціонуєте частинки там, де відбувається “подія”, а в другому там – де знаходиться мишка. По суті результат буде той самий, так що можна використовувати будь-який з варіантів.
2. Про генерування випадкових чисел я більш детально писав тут: http://nub.com.ua/2011/03/how-to-use-math-random-method-as/
Якщо бути вже до кінця точним, то наведена функція задає границі від 0.533333 до 1.2. Сподіваюся, стаття Вам допоможе розібратися.

Юрій
Липень 10, 2014 о 19:15

Сподіваюсь, що не видамся занудою, але замість “…два круга різного кольору…” мало би бути “…два кола різного кольору …”;
а замість “Стрічка var part: Array = [];” потрібно “Рядок var part: Array = [];” і наступні рядки так само.
Переймаюся лише тому, що дуже подобається те що робить автор і бажаю йому завзяття у роспочатому.

Богдан
Грудень 5, 2015 о 13:01

А буде урок присвячений часовій обробці?

1Пінгбеки & Трекбеки
Поділіться своєю думкою