[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Осваиваем Flash AS3 опенсорс
bodja
Как и обещал ,раскажу я Вам сказку про таинственный ActionScript3. biggrin.gif
Все про него слышали ,но каким боком его юзать никто толком и не знает. rolleyes.gif
Говорю сразу ,что бы его освоить нужны начальные знания ООП на уровне инкапсуляции и наследования и средне уметь кодить
на Си или JS с опытом подключения сторонних классов.
Поэтому 90% говнокодеров отшиваются сразу,отальные потом. biggrin.gif
Говнокодерами стают те,кто достиг этого уровня.
AS3 очень похож на JS,и если вы работали с DOM ,проблем с освоением у вас не возникнет.

Теперь давайте определимся с понятиями.
На флеш можно рисовать-тоесть использовать визуальный флеш редактор,можно склепать баннерок или ролик не написав ни единой строчки кода.
На флеш можно программировать используя язык ActionScript3.
Поэтому если вам нужен ролик,не парте мозги,ставте визуальный флеш-редактор и рисуйте наздоровье.
Если же вам нужна программа - курите ActionScript3.
ActionScript3 является языком ,не привязаным к какому нибудь конкретному
флеш редактору,и естественно в доке и в книжках по нему Вы не найдете инфы ,каким боком его вставлять
в конкретный флеш-редактор с его персональными мухами. wink.gif
В этой статье я раскажу Вам про чистый кодинг для флеш на этом языке на опенсорсных инсрументах.
Начнем с установок необходимых программ и доки,закончим своим собственным флеш-плеером,будем смотреть на себя с веб камеры и общаться между флеш и яваскриптом.

Итак поехали ,качаем,ставим.

1 Редактор Notepad++
http://notepad-plus-plus.org/download/v6.1.2.html
2 Плагин NppExec к редактору ,он нам будет запускать компилятор.
Сначала инсталим редактор ,потом в его папку plugins заливаем файлы плагина,
потом перезапускаем редактор.В меню "плагины" появится NppExec
http://sourceforge.net/projects/npp-plugins/files/NppExec/
3 Опенсорсный компиллятор as3conpile с кучей еще полезных инструментов,качаем ,инсталим.
http://www.swftools.org/download.html

Все,у нас есть все необходимые программы.Хороши тем ,что не требуют дополнительно JAVA и NET Framework

Теперь дока по ActionScript3
Здесь официальный справочник Adobe на русском языке
http://help.adobe.com/ru_RU/FlashPlatform/...pt/3/index.html
В данном случае нас интересует пакет "flash.xxx.xxx" и все классы принадлежащие ему.
этот пакет классов является встроенным в FlashPlayer ,и требует только обьявления в нашем коде,
но физически эти классы располагать не нужно при компилляции,поэтому курим в основном их.

Есть еще книжка
ActionScript 3.0 Сборник рецептов. Джои Лотт. Деррон Шалл. Кейт Питерс.
Очень советую скачать и покурить.В отличии от справочника ,там все разжевано для новичков,
вплоть до того ,для чего необходим package {} в коде.

Пока все biggrin.gif ,кому интересно,курим пока доку,ставим программы.
Продолжение следует в следующем посте.
Если что неясно-спрашивайте.



Спустя 19 минут, 2 секунды (19.05.2012 - 22:05) redreem написал(а):
+1

Спустя 1 минута, 38 секунд (19.05.2012 - 22:07) sharki написал(а):
Ну нотепад это хорошо, а flex builder 4 еще лучше, он от Adobe, имеются кряки и т.п.

А лучшая книга это "ActionScript 3.0 для Flash. Подробное руководство". Сначало идет легко, но потом надо вникать в суть.

Плюс ко всему AS3 расширяется Flex'ом, это как бы HTML+CSS, только на флеш, и следовательно кроссбраузерен biggrin.gif Достаточно лаконичный и мультимедийный, от всяких анимаций до создания стрим потоков с веб камер.

Спустя 20 минут, 27 секунд (19.05.2012 - 22:27) bodja написал(а):
sharki
Можно качать тяжеленный билдер и не признаватся. biggrin.gif
Можно иметь нотепад с js ,php,as и подключенный к серверам,тут удобство немного другое. wink.gif
Каждому свое,тема была про опенсорс.
Цитата
Плюс ко всему AS3 расширяется Flex'ом, это как бы HTML+CSS, только на флеш, и следовательно кроссбраузерен

Чесно говоря непонял,что имелось ввиду.

Спустя 1 минута, 19 секунд (19.05.2012 - 22:29) sharki написал(а):
bodja
Вот как бы ты писал клиентские приложения на чистом AS3?)

Спустя 1 час, 35 минут, 10 секунд (20.05.2012 - 00:04) sebastjan написал(а):
bodja
+
Начало положено.
Давай выливай что нибудь простенькое.

Спустя 45 минут, 57 секунд (20.05.2012 - 00:50) Семён написал(а):
AS3 - язык программирования
Flex - Framework основанный на AS3
---------
Чистый AS3 хорошо использовать для создания баннеров, мультипликаций и прочих простых конструкций
------
Flex хорошо использовать в интерактивных клиентских приложениях основанных уже на готовых компонентах.

Спустя 17 часов, 46 минут, 49 секунд (20.05.2012 - 18:37) bodja написал(а):
Надеюсь проги поставили ,инфу покурили-поехали дальше.
Будем запускать свой первый флеш и выводить Hello World!
1 Делаем hello.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>
hello</title>
<body>
<object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="sample" width="320" height="240"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param
name="movie" value="Hello.swf" />
<param
name="quality" value="high" />
<param
name="bgcolor" value="#FFFFFF" />
<param
name="allowScriptAccess" value="sameDomain" />
<embed
src="Hello.swf" quality="high" bgcolor="#FFFFFF"
width="320" height="240" name="sample" align="middle"
play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
</object>
</body>
</html>

Собственно мы просто располагаем флеш обьект на хтмл странице,чтобы дошло ИЕ вставлен тег embed,
поэтому размеры и swf файл не забываем правильно указывать дважды.Есть другие вариации обьявления обьекта,даже с помощью
JS DOM,я думаю мы попозже их рассмотрим.

2 Создаем в редакторе Hello.as c таким содержанием

package {
import flash.display.MovieClip;
import flash.text.TextField;

public class Main extends MovieClip {

public function Main() {
var outputText = new TextField();
outputText.text = "Hello World!";
addChild(outputText);
}
}
}

Что мытут накалякали? :)
1 Импортировали главный класс MovieClip для отображения нашего флеша,наряду с ним есть класс Sprite который вы можете
часто встретить в примерах от Adobe ,отличается тем ,что не имеет событий по кадрам,тоесть как бы облегченная версия мувика,
считается что ест меньше ресурсов.
2 Импортировали класс TextField как контейнер для отображения текста.
3 Наследуем мувик в наш собственный класс Main
4 Вот здесь самое интересное public function Main() является конструктором нашего класса и должен иметь тоже название ,что и наш класс.
Начиная с этих строк и начнет работать наш код.
5 Дальше я думаю расказывать нет смысла,все и так ясно.

Итак ,у нас есть редактор,плагин для запуска компилятора через командную строку и вывода
результата в окно редактора ,ну и сам компиллятор.
Позже мы кратко рассмотрим еще три бесплатных компиллятора связаных с ActionScript.
Начнем с настройки компиллятора.Что он нам предлагает

Цитата
-h , --help                    Print short help message and exit
-V , --version                 Print version info and exit
-v , --verbose                 Increase verbosity
-q , --quiet                   Decrease verbosity
-C , --cgi                     Output to stdout (for use in CGI environments)
-R , --resolve                 Try to resolve undefined classes automatically.
-D , --define <namespace::variable>    Set a compile time variable (for doing conditional compilation)
-X , --width                   Set target SWF width
-Y , --height                  Set target SWF width
-r , --rate                    Set target SWF framerate
-M , --mainclass               Set the name of the main class (extending flash.display.MovieClip)
-l , --library <file>          Include library file <file>. <file> can be an .abc or .swf file.
-I , --include <dir>           Add additional include dir <dir>.
-N , --local-with-network      Make output file "local with networking"
-L , --local-with-filesystem     Make output file "local with filesystem"
-T , --flashversion <num>      Set target SWF flash version to <num>.
-o , --output <filename>       Set output file to <filename>.

И что нам нужно.
-X ,фактическая ширина флеш обьекта
-Y ,фактическая высота флеш обьекта
-r ,количество кадров в секунду обновления отображения.
-M ,имя главного класса (по умолчанию главный класс flash.display.MovieClip ,еще в народе называют мувик.)
-N -L ,опции безопасности флеш плеера или файлы доступны только с интернета ,но недоступны локальные или наоборот.
-о имя выходного файла SWF,если не указываем ,у нас на выходе будет файл swf с тем же именем ,что исходник на as

Итого у на командная строка будет иметь такой вид

C:\Program Files\SWFTools\as3compile.exe C:\test\Hello.as -X 320 -Y 240
Указываем путь к компиллятору ,путь к исходнику и размеры.
Теперь вставляем это в плагин.
Плагины>NppExec>Execute...>Save
Жмем Ок,
Если все в порядке,никаких ошибок не будет выведено в консоли

user posted image
Ну и все... Hello.swf у нас готов в той же директории ,что и as файл.
Открываем в браузере Hello.html видим наш Hello World!
Кричим громкое УРА!!!

Продолжение следует,будем делать плеер.
Если что не получилось с компилляцией - пишите,разберемся.

Спустя 3 минуты, 21 секунда (20.05.2012 - 18:40) bodja написал(а):
Цитата (sharki @ 19.05.2012 - 19:29)
bodja
Вот как бы ты писал клиентские приложения на чистом AS3?)

Начало положено,а там посмотрим. wink.gif

Спустя 2 дня, 15 часов, 58 минут, 35 секунд (23.05.2012 - 10:38) sebastjan написал(а):
bodja
Давай тему про плеер не забрасывай.
Актуальная штуковина.
Может сразу вместе с темой плеер+использование XMLHTTPRequest чтоб без перезагрузки плеер висел.

Спустя 10 часов, 1 минута, 52 секунды (23.05.2012 - 20:40) bodja написал(а):
sebastjan

Ну как то глубокого интереса не заметно,наверное всех распугал.
Оно и понятно ,гораздо проще написать alert('Hello World!') или echo 'Hello World!'
и не мучатся с какими то неизвестными компиллерами ,обьектами и классами :)
Ну ,что ж ,теперь для самых стойких покажем 1% мощи этого языка.
Делаем плеер.
Итак поехали. :D

 package {
import flash.display.MovieClip;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;

public class VideoExample extends MovieClip {
var videoURL = "sample.flv";
var connection;
var stream;
var video = new Video(320,240);

public function VideoExample() {
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.connect(null);
}

private function netStatusHandler(event) {
switch (event.info.code) {
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
//trace("Unable to locate video: " + videoURL);
break;
}
}


private function connectStream() {
stream = new NetStream(connection);
video.attachNetStream(stream);
addChild(video);
stream.play(videoURL);
}

}
}


Уже приехали :D :D :D
Вот и все.Размер swf 596 байт.Вот так вот...Делайте выводы.

Сохраняем как Player.as ,компилим вот такой строкой.
C:\Program Files\SWFTools\as3compile.exe C:\test\Player.as -X 320 -Y 240 -N
или такой
C:\Program Files\SWFTools\as3compile.exe C:\test\Player.as -X 320 -Y 240 -L
Еще нужен файл видео с названием sample.flv
HTML

Свернутый текст
<html>
<body>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="sample" width="320" height="240"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param name="movie" value="Player.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="allowScriptAccess" value="always" />
<embed src="Player.swf" quality="high" bgcolor="#FFFFFF"
width="320" height="240" name="sample" align="middle"
play="true" loop="false" quality="high" allowScriptAccess="always"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
</object>

</body>
</html>


Напомню ,что наш флеш использует внешние файлы для загрузки ,поэтому нам нужно указать
компиллятору опции -L(для локальных файлов) или -N(для файлов с инета),что бы потом не удивлятся почему
на компе работает ,а на сайте нет или наоборот.
Итак ,что мы накалякали в коде?
1 Указали видеофайл flv,открыли соединение connection,открыли стрим для потока видео и создали обьект Video для
отображения.
2 Что у нас делают функции?
VideoExample - открывает соединение и назначает событие в случае успешного\неуспешного соединения.
netStatusHandler-функция назначеного события ,разруливает продолжать дальше или передать код на отладочную информацию.
connectStream-при успешном соединении ,открывает поток,назначает его обьекту video,располагает на экране ,ну и сразу play.

Здесь конечно мы расмотрели простейший плеер ,без кнопочек и рюшечек - это я сделал не случайно,во первых просто.
Во вторых если будет итерес ,покажу как мы кнопочки управления будем разполагать не в плеере ,а на ХТМЛ странице и управлять им через яваскрипт.

Ну а теперь делаем плеер специально для sebastjan :D ,с рекламной вставкой.
Плеер у нас будет не простой ,а золотой.Ну а если серьезно ,он нам будет рекламу посреди видео показывать не просто текстом ,а полноценным роликом.
Тоесть делаем рисуем баннер-ролик в редакторе ,а потом мы его будем проигрывать вместе с видеофайлом.
Поехали...

package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.*;
import flash.net.URLRequest;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.utils.Timer
import flash.events.TimerEvent;

public class PlayerSWF extends MovieClip {
var url_swf='n9.swf';
var url_video = "sample.flv";
var connection = new NetConnection();
var stream;
var loader = new Loader();
var video = new Video(320,240);
var timer1 = new Timer(2000,1);
var timer2 = new Timer(6000,1);
public function PlayerSWF() {
connection.addEventListener(NetStatusEvent.NET_STATUS, connectComplete);
connection.connect(null);
}

private function connectComplete(event) {
stream = new NetStream(connection);
video.attachNetStream(stream);
addChild(video);
stream.play(url_video);
timer1.addEventListener(TimerEvent.TIMER, addSWF);
timer1.start();
}
function addSWF(event) {
loader.load(new URLRequest(url_swf));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderComplete);
}
function loaderComplete(event) {
loader.width=320;
loader.height=240;
addChild(loader);
timer2.addEventListener(TimerEvent.TIMER, removeSWF);
timer2.start();
}
function removeSWF(event) {
removeChild(loader);
}

}
}

Сохраняем как PlayerSWF.as ,компилим вот такой строкой.
C:\Program Files\SWFTools\as3compile.exe C:\test\PlayerSWF.as -X 320 -Y 240 -N
или такой
C:\Program Files\SWFTools\as3compile.exe C:\test\PlayerSWF.as -X 320 -Y 240 -L
Еще нужны файлы видео с названием sample.flv,и ролик n9.swf.
HTML

Свернутый текст
<html>
<body>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="sample" width="320" height="240"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param name="movie" value="PlayerSWF.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#eeeeee" />
<param name="allowScriptAccess" value="always" />
<embed src="PlayerSWF.swf" quality="high" bgcolor="#eeeeee"
width="320" height="240" name="sample" align="middle"
play="true" loop="false" quality="high" allowScriptAccess="always"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
</object>

</body>
</html>


Что ,мы здесь намутили?
В принципе ,тоже что и в предыдущем примере,но добавили два таймера и загрузчик для swf файла нашего рекламного ролика.
Первый таймер нам дает задержку в 2сек после того как начнет проигрыватся видео ,второй через 6сек этот ролик уберет из отображения.
Так как рекламный ролик у меня был большого размера ,я его немного приплюснул до размеров плеера кодом.
Цитата
loader.width=320;
loader.height=240;


Так что с sebastjan ящик немецкого пива. :D
Понятно ,что языку я вас научить я не смогу,но как научится подскажу.
Я выше давал ссылку на справочник Adobe ,смотрим описание пакетов ,потом выбираем какие классы нам нужны для работы по их описанию.
Начинаем курить класс ,практически для каждого класса есть примеры в конце страницы,если видите пример с package можете просто вставлять в редактор и пробовать пример в действии.
Как правило все идет с полутыка.Единственное не забываем ,там примеры идут часто с главным классом Sprite ,а у компиллятора по умолчанию MovieClip,
тогда просто добавляем ему опцию -M flash.display.Sprite

Примеры в действии пока можно посмотреть здесь

плеер
плеер с рекламой

Спустя 11 часов, 18 секунд (24.05.2012 - 07:41) redreem написал(а):
bodja

я жду выходных например, и буду штудировать smile.gif

Спустя 6 часов, 58 минут, 18 секунд (24.05.2012 - 14:39) sebastjan написал(а):
bodja
Спасибо, офигительно, +++
Буду курить.
Только у меня ссылка с плеером где дожна быть реклама , без рекламы почему то.

Спустя 9 часов, 1 минута, 39 секунд (24.05.2012 - 23:41) bodja написал(а):
Пардон за последний пример.
Вчера инет сильно лагал ,небыло воможности нормально проверить.
Локально он работает ,с инета нет.
Вот подправленный код,пришлось пойти на небольшую хитрость из за загрузки AS2 в AS3.

 package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.media.Video;

public class VideoExample extends MovieClip {
var url_swf='n9.swf';
var url_video = "sample.flv";
var connection = new NetConnection();
var stream;
var ldr = new Loader();
var rect = new Shape();
var video = new Video(640,480);

public function VideoExample() {
connection.addEventListener(NetStatusEvent.NET_STATUS, connectComplete);
connection.connect(null);
}
private function connectComplete(event) {
stream = new NetStream(connection);
video.attachNetStream(stream);
addChild(video);
stream.play(url_video);
setTimeout(startSWF, 3000);
}
private function startSWF() {
rect.graphics.beginFill(0xFFFF);
rect.graphics.drawRect(0, 0, 640, 480);
rect.graphics.endFill();
addChild(rect);
ldr.mask = rect;
var urlReq = new URLRequest(url_swf);
ldr.load(urlReq);
addChild(ldr);
setTimeout(stopSWF, 6000);
}
private function stopSWF() {
removeChild(ldr);
}

}
}

Все остальное тоже.
Подправленый пример там же

Спустя 19 дней, 13 часов, 26 минут (14.06.2012 - 13:07) Invis1ble написал(а):
bodja
У меня не получается завести первый пример из этого поста. В консоли хрома ошибок нет, компилится с варнингом, но я так понял, что в коде все норм
Цитата
"C:\Program Files (x86)\SWFTools\as3compile.exe" "C:\apache\test\www\media\as\Player.as" -o "C:\apache\test\www\media\swf\Player.swf" -X 360 -Y 288 -L
Process started >>>
C:\apache\test\www\media\as\Player.as:16:45: warning: Couldn't resolve 'NetStatusEvent', doing late binding
<<< Process finished.
================ READY ================

/media/as/Player.as
package {
import flash.display.MovieClip;
import flash.text.TextField;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;

public class VideoExample extends MovieClip {
var videoURL = "sample.flv";
var connection;
var stream;
var video = new Video(360, 288);

public function VideoExample() {
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.connect(null);
}

private function netStatusHandler(event) {
switch (event.info.code) {
case "NetConnection.Connect.Success" :
connectStream();
break;
case "NetStream.Play.StreamNotFound" :
trace("Unable to locate video: " + videoURL);
break;
}
}


private function connectStream() {
stream = new NetStream(connection);
video.attachNetStream(stream);
addChild(video);
stream.play(videoURL);
}
}
}

/index.php

<!DOCTYPE html>
<html>
<body>
<object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="sample" width="360" height="288"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param
name="movie" value="/media/swf/Player.swf" />
<param
name="quality" value="high" />
<param
name="bgcolor" value="#FFFFFF" />
<param
name="allowScriptAccess" value="always" />
<embed
src="/media/swf/Player.swf" quality="high" bgcolor="#FFFFFF"
width="360" height="288" name="sample" align="middle"
play="true" loop="false" quality="high" allowScriptAccess="always"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
</object>

</body>
</html>

ролик скачал тут, Windy 50s Mobility Scooter Race (первый который), переименовал в sample.flv и положил в корень. При обращении к index.php тупо ничего не происходит.

Спустя 20 минут, 14 секунд (14.06.2012 - 13:27) killer8080 написал(а):
Invis1ble
кажется ты пропустил
    import flash.events.NetStatusEvent;

Спустя 4 минуты, 48 секунд (14.06.2012 - 13:32) Invis1ble написал(а):
killer8080
точняк, спасибо smile.gif все работает, вонинг при компиляции пропал.
невнимательность - злая штука... smile.gif



Спустя 7 минут, 4 секунды Invis1ble написал(а):
У меня теперь вот такой вопрос возник: имеет ли смысл учить флэш? Если не ошибаюсь, где-то читал, что его поддержка сворачивается unsure.gif . Ну и учитывая HTML5 с его фичами...

Спустя 1 час, 42 минуты, 56 секунд (14.06.2012 - 15:15) killer8080 написал(а):
Цитата (Invis1ble @ 14.06.2012 - 13:32)
Если не ошибаюсь, где-то читал, что его поддержка сворачивается. Ну и учитывая HTML5 с его фичами..

Думаю что стоит. HTML5 и половины не может того, что может флеш. Да и сырой он пока. smile.gif

Спустя 1 час, 19 минут, 15 секунд (14.06.2012 - 16:34) bodja написал(а):
Invis1ble

import flash.events.*;
Должен был импортировать все классы этого пакета,хотя не исключаю ,что могут быть варианты ,что необходимо явно указать класс.

Цитата
У меня теперь вот такой вопрос возник: имеет ли смысл учить флэш? Если не ошибаюсь, где-то читал, что его поддержка сворачивается

Думаю что все наоборот,сейчас идет поддержка флеш 10 на базе андроид в мобильных и планшетниках даже у китайцев, IOS сильно скрепя зубами потихоньку ее добавляет. biggrin.gif ,в противном случае все перейдут на андроид послав подальше IOS.
HTML5 детский сад по сравнению с флеш,тем более сырой и опять будет куча кроссбраузерных костылей.
Бытует общее мнение ,что полностью на флеш пока нет смысла переходить ,но в качестве отдельных плагинов ,где флеш может себя проявить ,все таки стоит применять.
Теже плееры ,вебкамеры,отличная альтернатива canvas (слайдеры ,банеры),можно сделать классный аякс.
Хотя есть и успешные проекты ,взять фотострану например.

Спустя 47 минут, 55 секунд (14.06.2012 - 17:22) Invis1ble написал(а):
вобщем скачал Колин Мук ActionScriptCS3, буду пробовать

Спустя 2 месяца, 20 дней, 4 часа, 4 минуты, 27 секунд (4.09.2012 - 21:26) redreem написал(а):
к первому посту о первой компиляции следует добавить, что для плагина NppExec надо поставить галочку в его меню: Follow $(CURRENT_DIRECTORY). Иначе откомпилированный файл не будет сохраняться в той же директории, что и as.

Спустя 17 минут, 20 секунд (4.09.2012 - 21:44) bodja написал(а):
redreem
При условии ,если не будет указан его абсолютный путь.

ЗЫ Пытался поработать с перспективной проекцией,чето непашет у меня и немогу вкурить ,или это компиллер класса не видит ,или я опять чтото пропустил.
Буду пробовать еще Flash Develop на досуге.

Спустя 7 минут, 51 секунда (4.09.2012 - 21:51) redreem написал(а):
bodja

пытаюсь сунуть пример внизу страницы отсюда: http://help.adobe.com/ru_RU/FlashPlatform/...play/Shape.html

компилятор пишет:

Цитата
C:\Program Files\SWFTools\as3compile.exe D:\AS3\hello.as -X 1600 -Y 400 -N
Process started >>>
D:\AS3\hello.as:66:2: warning: no global public MovieClip subclass
<<< Process finished.
================ READY ================


нуб да?

вот это как написать:
Цитата

Объявите свойство size для последующего использования при определении размера каждой фигуры.
Объявите свойства, определяющие оранжевый цвет фона, темно-серый цвет рамки, размер рамки в пикселях, равный 0, радиус угла, равный 9 пикселям; также задайте расстояние между краем рабочей области и другими объектами, равное 5 пикселям.
Используйте свойства, объявленные в предыдущих шагах, вместе со встроенными методами класса Graphics, чтобы нарисовать круг, прямоугольный примитив со скругленными углами и квадрат с координатами x = 0, y = 0.
Повторно нарисуйте все эти фигуры у верхнего края рабочей области, начиная с точки x = 5, y = 5 с расстоянием 5 пикселей между ними с использованием метода refreshLayout().

Спустя 6 минут, 55 секунд (4.09.2012 - 21:58) bodja написал(а):
нуб да?
Ну еще пока не все потеряно biggrin.gif biggrin.gif biggrin.gif
Дело в этом

Цитата
public class ShapeExample extends Sprite


Дело в том что у этого компиллера по умолчанию стоит базовым классом MovieClip,
флеш раньше так делало ,потом перешло на более облегченный класс Sprite.
Я об этом писал выше.
Проще говоря у MovieClip тоже самое что и в Sprite ,только еще больше возможностей.
Поэтому просто делаем так

Цитата
public class ShapeExample extends MovieClip


И радуемся успеху. biggrin.gif

Спустя 7 минут, 4 секунды (4.09.2012 - 22:05) bodja написал(а):
Цитата
вот это как написать:

Там уже все написано в примере.

        private var size:uint           = 80;
private var bgColor:uint = 0xFFCC00;
private var borderColor:uint = 0x666666;
private var borderSize:uint = 0;
private var cornerRadius:uint = 9;
private var gutter:uint = 5;

и т.д.

Просто сидим ,разбираемся ,где ,чего.
ЗЫ Ты можеш сделать чуть проще.Что бы было яснее и типы с инкапсуляцией тебе не выносили мозг на начальном этапе.
Короче пиши примерно как на JS

        var size          = 80;
var bgColor = 0xFFCC00;
var borderColor = 0x666666;
var borderSize = 0;
var cornerRadius = 9;
var gutter = 5;

Спустя 43 минуты, 49 секунд (4.09.2012 - 22:49) redreem написал(а):
bodja
да, порадовался успеху, спс.
мне в AS непонятно одно, вроде идут одни объявления методов, а оказывается все это исполняется, типа сразу конструктор чтоль запускается... как мне например из этого примера нарисовать 10 кружков?

UPD: вопрос снят. приступ ночного нубизма smile.gif

Спустя 1 час, 34 минуты, 56 секунд (5.09.2012 - 00:24) Guest написал(а):
redreem
Да,конструктор главного класса запускается сразу.
В данном случае прога начинается с
Цитата
public function ShapeExample()

Спустя 55 секунд (5.09.2012 - 00:25) bodja написал(а):
Здесь был я :D

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

package {
import flash.media.*;
import flash.display.*;
import flash.text.*;
import flash.events.*;
import flash.utils.*;

public class Main extends MovieClip {
var text = new TextField();
var stars=new Stars(this);

function Main () {
addChild(text);
text.text='hello!';
text.textColor= 0xFFFFFF;
}
}


public class Stars {
var obj;
var star=[];

function Stars (obj) {
this.obj=obj;
for(var i=0;i<100;i++){
star[i] = new Star(obj,500,320);
}
obj.addEventListener(Event.ENTER_FRAME, move);
}

function move(event) {
for(var i=0;i<100;i++){
star[i].move();
}
}
}


public class Star {
var obj;
var star = new Shape();
var R=Math.round(Math.random()*2)+1;
var stepX=(Math.round(Math.random()*50)-45)/10+2;
var stepY=(Math.round(Math.random()*50)-45)/10+2;

function Star (obj,x,y) {
this.obj=obj;
star.graphics.beginFill(0xffffff);
star.graphics.drawRect(0, 0, R, R);
star.graphics.endFill();
star.x=x;
star.y=y;
obj.addChild(star);
}

function move() {
star.x+=stepX;
star.y+=stepY;
if(star.x>1000||star.y>600||star.x<10||star.y<10){star.x=500;star.y=320;}
}
}
}


<html>
<style>

body {background:#888;margin:0px;padding:0px}
</style>
<body>
<object
id="BridgeMovie" data="./test.swf" type="application/x-shockwave-flash" height="640" width="1024">
<param
name="menu" value="true" />
<param
name="quality" value="high" />
<param
name="wmode" value="transparent" />
<param
name="allowScriptAccess" value="always" />
<div>
Тест для поисковиков и браузеров не поддерживающих плагины</div>
</object>
</body>

</html>


ЗЫ размер flash x:1000 y:640
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.