Создаем зажигалку

Content on this page requires a newer version of Adobe Flash Player.

Информация
Название: 
Создаем зажигалку
Автор: 
Шевченко Борис (Neirol)
Формат видео: 
avi
Продолжительность: 
10 минут
Размер: 
27,4 МБ

В этом уроке вы научитесь создавать что-то наподобии зажигалки, огонь которой будет создан программным способном. Только не злоупотребляйте им

Исходник: 

Похожие записи

Комментарии

Аватар пользователя sashaoff

супер :) прикольно :)

Аватар пользователя Niter43

Круть респект автору!

yahoo

Всё сделал только ошибочку с анимацией не большую зделал..... 

ag

И вместол огня сделал звездочки))))

Аватар пользователя originalg

Не хотелось бы говорить плохого, но уж больно это все похоже на это:
/flashlearn/flatexttutorials/538-razvodim-koster-bez-spichek

-i-zazhigalok-ili-kak.html
И где написано кто автор?

Аватар пользователя Neirol

originalg
Немножко эффект отличается - это раз.
Автор я (сейчас добавлю) - это два.
И все таки формат урока тоже сильно отличается.

Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />

Аватар пользователя switcher

Neirol: "Только не злоупотребляйте им"
Золотые слова ))
 
Твой проект во FlashPlayer за две минуты неприрывного "прожига" - "прожег" у меня 7 метров с небольшим. При этом в арифметической прогрессии росла нагрузка на процессор. А представьте, если кто-то захочет использовать это у себя в проекте, например - во flash-сайте.
Очень надеюсь, что у посетителей этого сайта много ОЗУ и мощный процессор.

smile

Как думаешь почему ? )))
 
P.S. кстати, спасибо. Давно хотел увидеть практические результаты тестов с подобными недочетами. Да все руки не доходили. А тут и готовая работа подвернулась.

<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя vitkuz

В проекте допущена ошибка, которая и ест память.

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

Урок, речь - все супер! Далеко пойдешь! Молодец.

И последнее... Постарайся сделать так, чтобы минута видео весила метр, поиграй с настройками...

Аватар пользователя switcher

черт )))
он бы и сам догадался. Посидел,подумал - зато навсегда врезалось бы в память.
А с подсказкой это не интересно )))))

<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя Neirol

switcher - я это знал и до того, как писал урок.
Но пока не нашел решения этой проблемы.
removeChild на последнем фрейме не помогали.

vitkuz - хотелось бы узнать каким способом ты создаешь видео-уроки. Я записываю через Camtasia и сохраняю в формате avi, предварительно изменив разрешение видео.
Просто у тебя ведь там флеш-плеер свой.

Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />

Аватар пользователя switcher

плохо, что знали и не указали предупреждение

smile

Класс 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>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя Fly

Очень хорошие уроки, только научись, пожалуйста, сохранять в меньшем размере, например формат swf - он будет меньше, чем avi... А так по качеству одобряю, дикция у тебя лучше моей :)

1) Админ всегда прав
2) Если админ не прав, смотри пункт 1

Мы в контакте - https://vkontakte.ru/club9573247
Не отвечаю на вопросы в личку касаемо Flash, у нас для этого есть форум

Аватар пользователя Neirol

switcher спасибо за пример, как раз таки из-за отсутствия parent мой флеш и ругался)
Fly это уже заметил vitkuz и я задал ему вопрос, каким способом сделать swf? Записываю через camtasia.

Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />

Аватар пользователя switcher

как раз таки из-за отсутствия parent

smile

я даже не знаю, где в твоем коде можно было обратиться к parent  так, чтобы flash ругался на его отсутствие...
Если только в конструкторе, но в конструкторе употреблять parent, очевидно, что нельзя. По крайней мере, пока ребенок не добавлен в список отображения.
 
Мой пример работает?

<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя Neirol

Я имел ввиду что я просто removeChild использовал, без parent
Не проверял твой вариант, но проще parent.removeChild(this) добавить в последний кадр FirePart, вместо Stop.

Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />

Аватар пользователя switcher

не проще, это не AS2. Вложенные мувиклипы в AS3 не могут иметь кода в кадрах.
 
И, кстати, вместо stop() - не есть праивльно. Удаление из списка отображение - не означает удаление объекта. GC еще нужно "проснуться" и, "почесав затылок", на очередной итерации "зачистки" попробовать удалить нигде не залинкованный объет. И то не все те, что имеются в приложении.
Так что рискуете - иметь несколько сотен, постоянно играющих клипов в "холостую" - достаточно длительное время.

<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя Neirol

Ясно. Спасибо, буду знать.

Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />

Аватар пользователя originalg

Neirol,
Я думаю стоит скачать конвертер avi->flv. flv будет тоже весить мало. Хотя тебе решать. Но формат avi явно не катит из-за большого размера.

Аватар пользователя Fly

Neirol,
В камтазии есть настройки, которые позволяют конвертировать в swf формат твоё видео.

1) Админ всегда прав
2) Если админ не прав, смотри пункт 1

Мы в контакте - https://vkontakte.ru/club9573247
Не отвечаю на вопросы в личку касаемо Flash, у нас для этого есть форум

Аватар пользователя Neirol

Да, вот только видео получилось вообще размеро около 100 мб.

Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />

Аватар пользователя Neirol

Проблему решил - нужно использовать JPEG Compression на 50% и все ОК.
switcher вложенных мувиклипов у меня там не было. На последнем кадре в общем нужно добавить stop(); и parent.removeChild(this).

Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />

Аватар пользователя moskitos80

Такой вопрос:
- а  если файл скрипта должен будет лежать в другой папке, как тогда их состыковать?

Аватар пользователя Neirol

Относительно папки с проектом - никак. Можно только в папке с проектом, создать еще папки, и в них поместить скрипт, и через названия этих папок обращатся к скрипту.

Написал программу? Проверь на ошибки. Исправил ошибки? Проверь еще раз. Нет ошибок? Ты плохой программист!<br /><br />https://prograph.ru/ - видео уроки по программированию в разных средах, а также справочники, программы и новости.<br />

Аватар пользователя qwert

Спасибо огромное. 
такой вопорс: могу я делать так для увеличения площади горения:

if(placingFire)

{
for(var i:int=200;i<300;i=i+10){

var fire:Fire = new Fire(i, 200);
addChild(fire);

}

Аватар пользователя SjeniaS

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);
}
}
}

но так огонь будет оч большой, по этому делай значения ещё меньше)))

Аватар пользователя Turbina69

Автор можешь кинуть сюда код? просто у меня слегка не получается списать его с видео!

Аватар пользователя Fly
Цитата: Turbina69

Автор можешь кинуть сюда код? просто у меня слегка не получается списать его с видео!

вы можете скачать исходник

1) Админ всегда прав
2) Если админ не прав, смотри пункт 1

Мы в контакте - https://vkontakte.ru/club9573247
Не отвечаю на вопросы в личку касаемо Flash, у нас для этого есть форум