Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   ActionScript 3 с нуля (http://www.flasher.ru/forum/showthread.php?t=92301)

Alex Lexcuk 30.04.2008 23:32

Копия рисунка АС3
http://kind-armadillo.pochta.ru/FlaAC3/Bmp_copy.swf
http://kind-armadillo.pochta.ru/FlaAC3/BMP_copy.rar

Копия клипа
http://kind-armadillo.pochta.ru/FlaAC3/Mov_copy.swf
http://kind-armadillo.pochta.ru/FlaAC3/Mov_copy.rar


Дождь на AC3
http://kind-armadillo.pochta.ru/FlaAC3/rain_ac3.swf
http://kind-armadillo.pochta.ru/FlaAC3/rain_ac3.rar

модифицированный дождь АС3
http://kind-armadillo.pochta.ru/FlaAC3/Mod_rain_ac3.swf
http://kind-armadillo.pochta.ru/FlaAC3/mod_rain_ac3.rar

Листопад
http://kind-armadillo.pochta.ru/fla/deciduous.rar
http://kind-armadillo.pochta.ru/fla/deciduous.swf



Осциллографф AC3
http://kind-armadillo.pochta.ru/fla/OSC_AC3.rar
http://kind-armadillo.pochta.ru/fla/osc.swf

Рандомная курва
http://kind-armadillo.pochta.ru/FlaAC3/curve.rar
http://kind-armadillo.pochta.ru/FlaAC3/curve.swf

Загрузка флешки на кнопку
http://kind-armadillo.pochta.ru/FlaAC3/loadSWF.swf
http://kind-armadillo.pochta.ru/FlaAC3/loadSWF.rar

Загрузка текста
http://kind-armadillo.pochta.ru/FlaAC3/load_text.rar
http://kind-armadillo.pochta.ru/FlaAC3/load_text.swf

вращение внешнего осцилографа
http://kind-armadillo.pochta.ru/FlaAC3/RotateSWF.swf
http://kind-armadillo.pochta.ru/FlaAC3/RotateSWF.rar

демонстрация твина
http://kind-armadillo.pochta.ru/FlaAC3/tweenDemo.swf
http://kind-armadillo.pochta.ru/FlaAC3/tweenDemo.rar

Вращение куба
http://kind-armadillo.pochta.ru/FlaAC3/mur_cube.swf
http://kind-armadillo.pochta.ru/FlaAC3/cube.rar

http://kind-armadillo.pochta.ru/FlaAC3/cube_mod.swf
http://kind-armadillo.pochta.ru/FlaAC3/cube_mod.rar

http://kind-armadillo.pochta.ru/FlaA...e_text_mod.swf
http://kind-armadillo.pochta.ru/FlaA...e_text_mod.rar

//галерея
http://dnadillo.dn.ua/mur_gallery/page_0.html
Исходник
http://dnadillo.dn.ua/mur_gallery/mur_gallery.rar

//урок по созданию кнопок
http://dnadillo.dn.ua/mur_gallery/le...on/page_0.html

Alex Lexcuk 05.05.2008 21:21

Новая галерея, теперь не нужен файл с ссылками на рисунки, рнр все сделает сам, поищет в соответствующей папке файлы *.jpg и *.JPG. Вес галереи улучшен до 9 кБ. Сделал и комментарии на английском языке.
http://dnadillo.dn.ua/mur_gallery/php/AC3_PHP.swf
http://dnadillo.dn.ua/mur_gallery/ph...ScoresText.txt
http://dnadillo.dn.ua/mur_gallery/ph...ry_AC3_PHP.rar

DRAGOnoid 05.05.2008 22:48

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

Alex Lexcuk 07.05.2008 18:47

Флешка уравляет явой, ява управляет флешкой на хатемель странице.
http://dnadillo.dn.ua/php_flash/MUS/Mus_1.html
http://dnadillo.dn.ua/php_flash/MUS/Mus_1.rar

Alex Lexcuk 12.05.2008 20:03

Haдпиcь сo 3BE3ДHЫХ войн
http://dnadillo.dn.ua/mur_gallery/ac3FLA/star_war.swf
http://dnadillo.dn.ua/mur_gallery/ac3FLA/star_war.rar

CEBEP 12.05.2008 20:56

Какая разница между super и super() ?

etc 12.05.2008 22:25

Цитата:

Сообщение от CEBEP (Сообщение 738781)
Какая разница между super и super() ?

Первое — обращение к свойству суперкласса (если кроме super ничего нет, то это ничего не означает), а второе — вызов конструктора суперкласса.

Reflection 17.05.2008 20:00

Подскажите, у меня есть XML-файл - piclist.xml :

Код:

<pic>
        <album aname="albm1">
                <img id="1" iname="telka">img1.jpg</img>
                <img id="2" iname="wallpap">img2.jpg</img>
                <img id="2" iname="wallpap">img3.jpeg</img>
        </album>
</pic>

я написал такой код который раскалбашивает XML и загружает прописанные в нем картинки:

Код:

package {

        import flash.display.*;
        import flash.events.*;
        import flash.net.*;
        import flash.utils.*;
        import flash.events.MouseEvent;

        public class gallery extends MovieClip {
                var pic:XML;
                var array:Array=new Array();
                var colimg;
                var clicks:Boolean=false;
                var arMC:Array=new Array();
                public function gallery() {
                        var loader:URLLoader=new URLLoader();
                        loader.dataFormat=URLLoaderDataFormat.TEXT;
                        loader.addEventListener(Event.COMPLETE, hendleComplete);
                        loader.load(new URLRequest("piclist.xml"));
                }
                public function hendleComplete(event:Event) {
                        try {
                                pic=new XML(event.target.data);
                        } catch (e:TypeError) {
                                trace("не получилось преобразовать текст в XML");
                                trace(e.message);
                        }
                        colimg=pic.album.img.length();
                        for (var j:int=0; j<colimg; j++) {
                                array.push(pic.album.img[j]);
                        }
                        for (var i:int=0; i<array.length; i++) {
                                var img=array[i];
                                var _loaderpic:Loader=new Loader();
                                var mc:MovieClip=new MovieClip();
                                _loaderpic.name="_loaderpic"+i;
                                mc.name="mc"+i;
                                _loaderpic.load(new URLRequest(img));
                                addChild(mc);
                                mc.addChild(_loaderpic);
                                //mc.x=mc.width*i+100;
                                mc.scaleX=0.2;
                                mc.scaleY=0.2;
                                trace(i);
                                trace(img);
                                arMC.push(mc);
                                mc.addEventListener(MouseEvent.CLICK,hclick);
                        }
                        //trace(numChildren);
                       
                }
                public function hclick(event:Event):void {
                        if (clicks) {
                                event.target.scaleX=1;
                                event.target.scaleY=1;
                                event.target.x=0;

                                clicks=false;
                        } else {
                                event.target.scaleX=4;
                                event.target.scaleY=4;
                                event.target.x=stage.width/2;
                                clicks=true;
                        }
                }
        }
}

Скорей всего корявый т.к. руки не заточил и не выпрямил еще =))
Я хоче чтобы у меня каждая картинка грузилась в отдельный MovieClip и я в цикле прописал
Код:

mc.name="mc"+i;
картинки добавляются но что-то я не пойму под какими именами они для того чтобы обратится к ним позже, если я пишу вместо trace(numChildren); trace(mc); то он показывает [object MovieClip] если trace(mc1); /mc2,mc0 и т.д./ - 1120: Access of undefined property mc1.

и еще хочу чтобы картинки были на определенном расстоянии и пишу
Код:

mc.x=mc.width*i+100;
но они сдвигаются все вместе и всеравно друг на друге. где мои косяки?если не трудно прошу поправить с пояснением.

DRAGOnoid 17.05.2008 21:58

ну trace(mc); - действительно покажет [object MovieClip], ты сам правильно писал что чтобы показать имя надо писать trace(mc.name); или я что то не так допонял?

чтобы картинки упорядочить введи одну переменную по типа
Код:

var height:uint = 0;
for (var i:uint=0; i<10; i++){
this['mc'+i].x = height;
height+=this['mc'+i].width +10;
}


Reflection 17.05.2008 23:23

DRAGOnoid, спасибо! все получилось.

Reflection 18.05.2008 12:20

А вот еще что я хотел спросить. Если я в конце моей функции hendleComplete вставлю кнопку добавлю листнера и в функции которая будет вызываться,скажем, при клике по кнопке, буду указывать клип с картинкой(например чтобы сдвинуть его,или еще что ни будь), то мне компилятор скажет : 1120: Access of undefined property mc. Как тогда обращаться к клипам, если они не видны за пределами функции hendleComplete ? я не могу же их объявить после объявления класса т.к. я не знаю сколько клипов будет. Или это как то можно?

DRAGOnoid 18.05.2008 12:32

муторно
самый простой способ опять же сам сказал если есть функция hendleComplete
в которой у тебя что то типа
Код:

public function hendleComplete (event:Event):{
for (var i:uint=0; i<10; i++) {
this['mc'+i].addEventListener(MouseEvent.CLICK, this['onClick'+i]);
}
}

но в таком случае тебе придётся писать непонятное колличество функций для непонятного колличества мувклипов а это неправильно!

кажется ещё _ect говорил, да и многие другие, да и я очень советую: сложные объекты программируй отдельными классами.

т.е. тебе надо создать отдельный класс для мувклипов.
т.е. программируешь отдельный класс мувклипа, со всеми нужными нажатиями и обращениями.

Reflection 18.05.2008 12:54

тоесть я потом создаю экземпляры класса по кол-ву равным с кол-вом картинок. Ладно буду пытаться разбираться с классами.

CEBEP 21.05.2008 00:01

Код:

var req:URLRequest = new URLRequest("a.swf");
var loader:Loader = new Loader();


addEventListener(MouseEvent.CLICK, myLoad);
function myLoad(event:MouseEvent):void
{
        loader.load(req);
        trace(loader.contentLoaderInfo.bytesTotal);
        myContainer.addChild(loader);
       
}

Грузит флешку, всё ок. Но как мне добратся до bytesTotal

loader.contentLoaderInfo.bytesTotal - возращяет 0 :(

etc 21.05.2008 02:26

А вы думаете, что флеш может мгновенно после старта загрузки определить размер файла?

CEBEP 21.05.2008 10:01

Код:

myContainer.addChild(loader);
trace(loader.contentLoaderInfo.bytesTotal);

так? но всё равно и bytesTotal и bytesLoaded возвращает 0 :(

etc 21.05.2008 10:33

Нет, не так. В сути ничего не изменилось, вы пытаетесь получить размер файла ещё до начала загрузки оного. А оно (начало загрузки) начнется гораздо позже выполнения любого кода в myLoad.

Reflection 21.05.2008 13:53

на сколько я понимаю нужно добавить
Код:

loader.addEventListener(ProgressEvent.PROGRESS, hendleprogress);

etc 21.05.2008 14:05

У LoaderInfo есть и другие события.

CEBEP 21.05.2008 16:15

ура, заработало :) спасибо событиям INIT и COMPLETE

Alex Lexcuk 29.05.2008 00:45

Выкладываю синусоидальный текст
Он в шапке сайта
http://dnadillo.dn.ua
если на нем кликнуть появится исходник.

Интересный эксперимент с блендмоде
грузим рисунки
http://dnadillo.dn.ua/images/imag/magna_carta_131.JPG
http://dnadillo.dn.ua/images/imag/magna_carta_127.JPG
в бит мапу
ставим бленд моде blendMode="darken";
складываем их и получаем третий битмап, а потом еще и крутим, вертим эту байду
http://dnadillo.dn.ua/fla/in-2-1.swf
http://dnadillo.dn.ua/fla/in-2-1.zip


Это все легко вставить в текстовое поле, используя xml файл
Загрузка рисунков в текстовую область
http://dnadillo.dn.ua/fla/XML/img-xml.swf
http://dnadillo.dn.ua/fla/XML/mur_xml_file_img.xml

Можно используя xml вставить рисунки в спрайты, как бы минигалерея.
http://dnadillo.dn.ua/fla/XML/img-xml-img.swf
http://dnadillo.dn.ua/fla/XML/img-xml-img.zip
http://dnadillo.dn.ua/fla/XML/img_xml.xml

Можно сделать из мувиков кнопку используя специальный класс, это элементарно легко.
кнопки на основе фильтра
http://dnadillo.dn.ua/fla/filter-button.swf
http://dnadillo.dn.ua/fla/filter-button.zip

Можно передать переменные php скрипту, получится как-бы гостевая книга, объем файла ограничен 400 байт.

Отправить переменные
http://dnadillo.dn.ua/fla/php/php.swf
http://dnadillo.dn.ua/fla/php/application.txt

http://dnadillo.dn.ua/fla/php/php-flash-write.zip
http://dnadillo.dn.ua/fla/php/php-flash-write.txt


Как легко текстовое поле превращается в маску? Элементарно...
http://dnadillo.dn.ua/fla/mask-text.swf
http://dnadillo.dn.ua/fla/mask-text.zip

Текстовый эффект обрамления текстa фильтром Glow, оно сделано как массив фильтров и применяется к тексту как утолщение обрамления, затем утоньшение. Работает быстрее молнии и никогда не останавливается 5 кБ.
Текстовый эффект кайма
http://dnadillo.dn.ua/fla/text-Glow-filter.zip
http://dnadillo.dn.ua/fla/text-Glow-filter.swf

Попробовал передать переменные из ActionScript в javascript и обратно, это очень интересно, вот только с броузером Опера возникли трудности mode: transparent не хочет передавать переменные в javascript, сделал еще одну маленькую флешку но не прозрачную, связал ее с основной, посредством LocalConection, и маленькая флешка уже передает переменые в javascript, все как бы работает. И еще я передаю FlashVars.
http://dnadillo.dn.ua/fla/js-swf-html/js-swf-html.html

Юрий01 02.06.2008 21:22

Цитата:

Сообщение от DRAGOnoid (Сообщение 615510)
а ссылка есть? :)

или где купить

Читай "Essential ActionScript 3.0 by Colin Moock", глава первая, там все очень доходчиво, правда на английском. :)

http://www.amazon.co.uk/Essential-Ac...1573765&sr=8-1

CEBEP 05.06.2008 01:03

Пипл, на что реагирует "Event.OPEN" ? т.е. OPEN чего флешки или начала загрузки в другую флешку?

BlooDHounD 05.06.2008 01:47

CEBEP, а в хелпе, что написано?

CEBEP 05.06.2008 01:54

Defines the value of the type property of an open event object.
так что всё равно не понял, на что конкретно срабатывает :(

BlooDHounD 05.06.2008 02:37

http://livedocs.adobe.com/flash/9.0/...vent.html#OPEN

Felicast 07.06.2008 14:31

у меня есть кнопка (класс унаследован от SimpleButton). в дизайнере я добавляю на нее текстовое поле.
подскажите пожалуйста как мне из AS добраться до этого текстового поля.

Felicast 07.06.2008 16:26

вопрос снят

(btn.upState as Sprite).getChildAt(0);

unhappy 17.06.2008 19:12

Здравствуйте.

На странице 13 топика предложен тест производительности при явном указании типа переменной и без него.

Цитата:

Сообщение от __etc (Сообщение 686851)
Не бывает таких моментов. На скорость это основательно влияет:

Код:

var i:uint = 0;
var t:uint = getTimer();
var a = 0;
for (i = 0;i < 10000000;i+=1) {
        a+=1;
}
trace(getTimer()-t); // 559
t = getTimer();
var b:uint = 0;
for (i = 0;i < 10000000;i+=1) {
        b+=1;
}
trace(getTimer()-t); // 38


при выполнении в Adobe CS3 Professional результаты примерно 364 и 48.
при выполнении в FlashDevelop получается 1780 и 1320.
подскажите - в чём дело?

и ещё вопрос: может ли локальное приложение из .swf файла читать/сохранять данные на локальный диск?

etc 18.06.2008 00:55

Цитата:

Сообщение от unhappy (Сообщение 746079)
при выполнении в Adobe CS3 Professional результаты примерно 364 и 48.
при выполнении в FlashDevelop получается 1780 и 1320.
подскажите - в чём дело?

В том, что тестирование проводится в debug-режиме.

Цитата:

Сообщение от unhappy (Сообщение 746079)
и ещё вопрос: может ли локальное приложение из .swf файла читать/сохранять данные на локальный диск?

Не может.

unhappy 18.06.2008 01:45

Цитата:

Сообщение от __etc (Сообщение 746144)
В том, что тестирование проводится в debug-режиме.

ясно. спасибо.

Цитата:

Сообщение от __etc (Сообщение 746144)
Не может.

Как в таком случае можно реализовать хранение таблицы результатов, сохранений? В справке нашёл описание SharedObject (http://www.adobe.com/livedocs/flash/...redObject.html). У него есть возможность хранить данные как локально, так и на сервере. Правильно ли я понимаю, что правильным будет использовать его?
Или Flash подразумевает всё-таки хранение данных на сервере?

etc 18.06.2008 10:31

Цитата:

Сообщение от unhappy (Сообщение 746156)
Как в таком случае можно реализовать хранение таблицы результатов, сохранений? В справке нашёл описание SharedObject (http://www.adobe.com/livedocs/flash/...redObject.html). У него есть возможность хранить данные как локально, так и на сервере. Правильно ли я понимаю, что правильным будет использовать его?
Или Flash подразумевает всё-таки хранение данных на сервере?

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

unhappy 18.06.2008 11:14

В FlashDevelop тестировал так:
Код:

package {
        import flash.display.Sprite;
        import flash.utils.getTimer;
        import flash.text.TextField;

        public class Untitled2 extends Sprite
        {
                public function Untitled2 ()
                {
                        var myText:TextField = new TextField();
                        var t:uint;
                        var i:uint = 0;

                        t = getTimer();
                        var a:* = 0;
                        for (i = 0; i < 10000000; i++) { a = a + 1; }
                        myText.text = "a:*  " + (getTimer() - t) as String; // 660

                        t = getTimer();
                        var b:int = 0;
                        for (i = 0; i < 10000000; i++) { b = b + 1; }
                        myText.appendText("\nb:int " + (getTimer() - t) as String); // 73
                       
                        addChild(myText);
                }
        }
}

Цитата:

Чтобы сохранять удаленный SharedObject, вам потребуется как минимум FMS на сервере. Проще использовать любые другие методы сохранения данных на сервер.
У меня нет сервера )
Я только знакомлюсь с флешем и хочу написать небольшую игру. На будущее интересуюсь - как локально сохранять таблицу результатов к примеру..

Skriv 18.06.2008 11:23

Цитата:

На будущее интересуюсь - как локально сохранять таблицу результатов к примеру..
Код:

private var so:SharedObject;
so = SharedObject.getLocal('GameMemory');


unhappy 18.06.2008 11:30

Skriv
Спасибо!

Как раз нашёл книгу "ActionScript 3.0 Game Programming University 2007" и в ней вот такой текст:
Цитата:

Saving Local Data
A common need in game development is to store bits of local data. For instance, you
could store the player’s previous score. Or, you could store some game options.
To store a piece of data on the user’s machine, we’ll use a local SharedObject.
Accessing a SharedObject is the same act as creating one. Just asking whether it exists
will create it.
To do this, just assign a variable to the SharedObject of a certain name, with the
getLocal function:
Код:

var myLocalData:SharedObject = SharedObject.getLocal(“mygamedata”);
The myLocalData object is able to take any number of properties of any type: numbers, strings, arrays, other objects, and so on.
If you had stored same data in a property of the shared object named gameinfo you
could access it with: myLocalData.data.gameinfo:
Код:

trace(“Found Data: “+myLocalData.data.gameinfo);
So, set this gameinfo property. Just set it as you would a regular variable:
Код:

myLocalData.data.gameinfo = “Store this.”;
Try running the test movie SavingLocalData.fla. It uses the trace function to output
the myLocalData.data.gameinfo property. Because that isn’t set to anything, you’ll get
undefined as the result. But then, it sets the value. So, the second time you run the test, you get “Store this.”
=)

Nastardimus 04.07.2008 21:17

Чуваки, нужна помощь, как на AS3.0 написать драг.дроп кнопки, Драг у меня ещё кое-как вышел а вот с дропом проблемы.

Felicast 04.07.2008 23:07

при маусдаун startDrag(), при маусап stopDrag()
никаких телодвижений по сохранению координат не надо.

Nastardimus 06.07.2008 00:28

Цитата:

Сообщение от Felicast (Сообщение 750150)
при маусдаун startDrag(), при маусап stopDrag()
никаких телодвижений по сохранению координат не надо.

блин это я так знаю, напиши мне класс для кнопки с обоими этими функ-иями, проблема заключатся в том, что после 2.0 я понять не могу, как объект кнопку (не как класс) а именно как объект присвоить какой-нибудь переменной и уже драгать и дроппать. Объясните мне.


Часовой пояс GMT +4, время: 17:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.