Создаем зажигалку
Content on this page requires a newer version of Adobe Flash Player.
В этом уроке вы научитесь создавать что-то наподобии зажигалки, огонь которой будет создан программным способном. Только не злоупотребляйте им
- 750 просмотров
В этом уроке вы научитесь создавать что-то наподобии зажигалки, огонь которой будет создан программным способном. Только не злоупотребляйте им
Комментарии
супер :) прикольно :)
Круть респект автору!
Всё сделал только ошибочку с анимацией не большую зделал.....
И вместол огня сделал звездочки))))
Не хотелось бы говорить плохого, но уж больно это все похоже на это:
/flashlearn/flatexttutorials/538-razvodim-koster-bez-spichek
-i-zazhigalok-ili-kak.html
И где написано кто автор?
originalg
Немножко эффект отличается - это раз.
Автор я (сейчас добавлю) - это два.
И все таки формат урока тоже сильно отличается.
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />
Neirol: "Только не злоупотребляйте им"
Золотые слова ))
Твой проект во FlashPlayer за две минуты неприрывного "прожига" - "прожег" у меня 7 метров с небольшим. При этом в арифметической прогрессии росла нагрузка на процессор. А представьте, если кто-то захочет использовать это у себя в проекте, например - во flash-сайте.
Очень надеюсь, что у посетителей этого сайта много ОЗУ и мощный процессор.
Как думаешь почему ? )))
P.S. кстати, спасибо. Давно хотел увидеть практические результаты тестов с подобными недочетами. Да все руки не доходили. А тут и готовая работа подвернулась.
<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. "Совершенный код"</b>
В проекте допущена ошибка, которая и ест память.
Добавляя клипы на сцену, ты их не удаляешь по достижению нулевой прозрачности. А надо! Потому что в итоге получается огромное количество прозрачных клипов, которые и грузят память.
Урок, речь - все супер! Далеко пойдешь! Молодец.
И последнее... Постарайся сделать так, чтобы минута видео весила метр, поиграй с настройками...
черт )))
он бы и сам догадался. Посидел,подумал - зато навсегда врезалось бы в память.
А с подсказкой это не интересно )))))
<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. "Совершенный код"</b>
switcher - я это знал и до того, как писал урок.
Но пока не нашел решения этой проблемы.
removeChild на последнем фрейме не помогали.
vitkuz - хотелось бы узнать каким способом ты создаешь видео-уроки. Я записываю через Camtasia и сохраняю в формате avi, предварительно изменив разрешение видео.
Просто у тебя ведь там флеш-плеер свой.
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />
плохо, что знали и не указали предупреждение
Класс Fire:
package
{
import flash.events.Event;
public class Fire extends FirePart
{
public function Fire(_x, _y)
{
x = _x + Math.random() * 5 - 3;
y = _y + Math.random() * 5 - 3;
alpha = Math.random() * 2 + 2;
scaleX = scaleY = Math.random() * 2 + 1;
addFrameScript(totalFrames - 1, func);
}
private function func():void
{
stop();
addFrameScript(totalFrames - 1, null);
parent.removeChild(this);
}
}
}
<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. "Совершенный код"</b>
Очень хорошие уроки, только научись, пожалуйста, сохранять в меньшем размере, например формат swf - он будет меньше, чем avi... А так по качеству одобряю, дикция у тебя лучше моей :)
1) Админ всегда прав
2) Если админ не прав, смотри пункт 1
Мы в контакте - https://vkontakte.ru/club9573247
Не отвечаю на вопросы в личку касаемо Flash, у нас для этого есть форум
switcher спасибо за пример, как раз таки из-за отсутствия parent мой флеш и ругался)
Fly это уже заметил vitkuz и я задал ему вопрос, каким способом сделать swf? Записываю через camtasia.
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />
как раз таки из-за отсутствия parent
я даже не знаю, где в твоем коде можно было обратиться к parent так, чтобы flash ругался на его отсутствие...
Если только в конструкторе, но в конструкторе употреблять parent, очевидно, что нельзя. По крайней мере, пока ребенок не добавлен в список отображения.
Мой пример работает?
<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. "Совершенный код"</b>
Я имел ввиду что я просто removeChild использовал, без parent
Не проверял твой вариант, но проще parent.removeChild(this) добавить в последний кадр FirePart, вместо Stop.
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />
не проще, это не AS2. Вложенные мувиклипы в AS3 не могут иметь кода в кадрах.
И, кстати, вместо stop() - не есть праивльно. Удаление из списка отображение - не означает удаление объекта. GC еще нужно "проснуться" и, "почесав затылок", на очередной итерации "зачистки" попробовать удалить нигде не залинкованный объет. И то не все те, что имеются в приложении.
Так что рискуете - иметь несколько сотен, постоянно играющих клипов в "холостую" - достаточно длительное время.
<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. "Совершенный код"</b>
Ясно. Спасибо, буду знать.
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />
Neirol,
Я думаю стоит скачать конвертер avi->flv. flv будет тоже весить мало. Хотя тебе решать. Но формат avi явно не катит из-за большого размера.
Neirol,
В камтазии есть настройки, которые позволяют конвертировать в swf формат твоё видео.
1) Админ всегда прав
2) Если админ не прав, смотри пункт 1
Мы в контакте - https://vkontakte.ru/club9573247
Не отвечаю на вопросы в личку касаемо Flash, у нас для этого есть форум
Да, вот только видео получилось вообще размеро около 100 мб.
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />
Проблему решил - нужно использовать JPEG Compression на 50% и все ОК.
switcher вложенных мувиклипов у меня там не было. На последнем кадре в общем нужно добавить stop(); и parent.removeChild(this).
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />
Такой вопрос:
- а если файл скрипта должен будет лежать в другой папке, как тогда их состыковать?
Относительно папки с проектом - никак. Можно только в папке с проектом, создать еще папки, и в них поместить скрипт, и через названия этих папок обращатся к скрипту.
Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />
Спасибо огромное.
такой вопорс: могу я делать так для увеличения площади горения:
if(placingFire)
{
for(var i:int=200;i<300;i=i+10){
var fire:Fire = new Fire(i, 200);
addChild(fire);
}
qwert,
на скока я знаю, так (var fire:Fire = new Fire(i, 200);) получится что огонь пойдет в точку i по x и в точку 200 по y, так как в параметрах функции (которая в классе) в параметрах получает значение X,Y(а это: mouseX,mouseY), по этому для написания этих строк, надо в параметрах функции(в классе), написать две переменные, к примеру они в функции будут названы a и b, тогда надобудет изменить строчку с размером, на эти две строки: scaleX=a;scaleY=b; и тогда шириной огонька станет переменная a, а высотой переменная b, тоесть код класса будет такой:
package{
import flash.events.Event;
import flash.display.MovieClip;
public class Fire extends MovieClip{
public function Fire(X,Y,a,b){
x = X+Math.random()*5-3;
y = Y+Math.random()*5-3;
alpha = Math.random()*2+2
scaleX = a;scaleY = b;
}
}
}
а код в самой проге соответственно:
var peremennaua:Boolean=false;
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
addEventListener(Event.ENTER_FRAME, enterFrame);
function mouseDown(e:MouseEvent)
{
peremennaua=true;
}
function mouseUp(e:MouseEvent)
{
peremennaua=false;
}
function enterFrame(e:Event)
{
if (peremennaua)
{
for(var i:int=0;i<5;i++){
var fire:Fire = new Fire(mouseX,mouseY,i, 5);
addChild(fire);
}
}
}
но так огонь будет оч большой, по этому делай значения ещё меньше)))
Автор можешь кинуть сюда код? просто у меня слегка не получается списать его с видео!
Автор можешь кинуть сюда код? просто у меня слегка не получается списать его с видео!
вы можете скачать исходник
1) Админ всегда прав
2) Если админ не прав, смотри пункт 1
Мы в контакте - https://vkontakte.ru/club9573247
Не отвечаю на вопросы в личку касаемо Flash, у нас для этого есть форум