Просмотр полной версии : ActionScript 3 с нуля
Andrianov
06.03.2008, 17:11
Подскажите пожалуйста как наименее геморройно узнать размер(ширину/высоту) сцены (Stage имеется ввиду) :rolleyes:
Mr. Fixit
06.03.2008, 17:17
stage.stageWidth;
stage.stageHeight;
FilimoniC
06.03.2008, 17:20
Вот эта книга когда то мне очень помогла - http://www.ozon.ru/context/detail/id/1401736/, написано легко и доступно.
Можно сказать с неё у меня всё и началось.
И ещё, кажется ты перепутал тему.
Это не по AS3, издание 2003 года, тогда AS3 еще не было.
Andrianov
06.03.2008, 17:21
Посылает... Перед данным кодом точно не нужно делать что-то еще?
Доброго времени суток.
Помогите начинающему, сделал баннер, а ссылку немогу никак привязать к нему - загружаю на сайт - и без кликания открывается страничка! Ясное дело неправильно делаю... башка пухнет! Подскажите пожалуйста - navigateToURL. Если можно просто синтакс... просто подключить ссылку, ну и , по возможности, чё-нить почитать, а то в инете много всего и разобраться тяжеловато... Не откажите в помощи!
Vallin, а за каким хреном вам для баннера использовать AS3?
Vallin,
1 Создаёшь картинку для баннера
2 Помещяешь её на сцену
3 Если тебе нужен фон, то не задавай его в свойствах документа, лучше сделать прямоугольник нужного цвета и поместить на задний план (убережёт от глюков с фоном)
4 Создаёшь пустую кнопку (в кадрах неичего нету)
5 Помещяешь созданную кнопку на сцену поверх картинки (пустая кнопка будет выглядеть как голубой прямоугольник)
6 Растягуешь кнопку на ширину всей сцены
7 В кадр добавляешь следуйщий код:
this.addEventListener(MouseEvent.CLICK, mouseClickHandler);
function mouseClickHandler(event:MouseEvent):void {
var urlRequest:URLRequest = new URLRequest("тут ссылка на целевой сайт");
try {
navigateToURL(urlRequest, "_blank");
} catch (e:Error) {
// handle error here
}
}
8 В Publish Settings на закладке Flash нужно установить access network only
9 Публикуешь
Работает безотказно!
Уважаемые! Благодарен Вам, что откликнулись! Попробую применить ваши советы. Но не откажите в поддержке... пытаюсь, как дизайнер... с вебом совладать - получтся, но не без Вашей помоши!
P.S. почему AS3 - ? - зачем брать к изучению то, что стареет - ?
P.P.S. а, действительно благодарен... сёня это (взаимопомощь) не так часто встретишь... (по крайней мере где живу...)
P.S. почему AS3 - ? - зачем брать к изучению то, что стареет - ?
AS1/AS2 для баннеров будет жить вечно. К тому же, AS3-вариант будет весить больше, что для баннеров очень критично. В данном случае стремление к изучению AS3 бессмысленно.
Подскажите, как обратится к главному Timeline-у ?
Если я не ощибаюсь то раньще можно было _root.gotoAndStop("page #");
а хелпе аналог _root значится stage, однако запись stage.gotoAndStop("page #"); вызывает error - undifined method. Попробывал parent, тоже не воркает :(
DRAGOnoid
29.03.2008, 12:49
во первых если ты пишешь в конструкторе главной сцены то не stage а this
во вторых используй не название клипа а порядковый номер - получаем
this.gotoAndStop(23);
во первых если ты пишешь в конструкторе главной сцены то не stage а this
во вторых используй не название клипа а порядковый номер - получаем
this.gotoAndStop(23);
Не, не савсем то.
У мя есть класс Menu где описана действие на клик мыхи по кнопкам меню, скажем для кнопки "News":
function mClick(event:MouseEvent):void
{
pageToGo = String(event.currentTarget).slice(8,-1) + "_page";
// [object News] + "_page" => обрезаю лишнее и получаю "News_page"
???.gotoAndStop(pageToGo);
//Вот здесь загвостка, как перейти в главном таймлайн-е на метку "News_page" ?
}
this.gotoAndStop(pageToGo); это вроде как для тайлаина нажатой кнопки получается. :(
stage — это Stage. В вашем случае нужно что-то вроде (super.root as MovieClip).gotoAndStop("page #");
stage — это Stage. В вашем случае нужно что-то вроде (super.root as MovieClip).gotoAndStop("page #");
О, благодарю! То что нужно :victory:
DRAGOnoid
02.04.2008, 23:42
никак не могу найти вопрос который где то уже вскакивал поэтому решил написать тут.
Допустим есть пакет SomeProject с набором классов лежащих в папке SomeProject. как мне организовать (какой *.AS надо сделать и что внём писать) чтобы можно было создать статичную функцию и вызвать её из любого конструктора в класс которого я импортировал этот пакет. по типу SomeProject.myFunction(someVar); ещё было бы лучще чтобы это функция вызывалась без приписки имени пакета, т.е. myFunction(someVar);
package ru.flasher {
public function myFunction(…):… {
}
}
import ru.flasher.myFunction;
myFunction(…);
SomeProject у вас не пакет, а top-level класс, не путайте понятия.
Есть в библиотеке мувик класса Rec с base-ом от MovieClip
Какая запись в последствии правильнее?
var rec = new Rec();
addChild(rec);
var rec:Rec = new Rec();
addChild(rec);
var rec:MovieClip = new Rec();
addChild(rec);
Все, кроме первой. А последняя обычно не используется.
Mr. Fixit
12.04.2008, 15:35
Конечно же вторая.. это очевидно.
Ибо класс Rec имеет свои свойства и методы, которые не имеет класс Мувиклип.
DRAGOnoid
12.04.2008, 16:16
спасибо __etc - извини что с опозданием я что то проглядел ответ
Нужно использовать сеттер.
public function set text(value:String):void {
this.txt.text = value;
}
mc.text = 'hello';
Агде этот сеттер нужно прописывать?
The dispatchEvent() method can be used by advanced programmers to dispatch a custom event object into the event flow. The only parameter accepted by this method is a reference to an event object, which must be an instance of the Event class or a subclass of the Event class. Once dispatched, the target property of the event object is set to the object on which dispatchEvent() was called.
Люди, если не сложно объясните общедоступным языком что такое dispatchEvent и если ещё и простой пример приведёте :rolleyes:
И что подразумевается под bubbles : Boolean - Indicates whether an event is a bubbling event. Что за булькающий случай?
BlooDHounD
14.04.2008, 01:07
http://www.google.ru/search?q=EventDispatcher+bubbles
Помогите, пожалуйста, не могу разобраться. В ас3 не силен :) Необходимо сделать, чтобы при нажатии на кнопку открывалась страничка в новом окне. В хелпе нашел следующее, используется для открытия странички:
package {
import flash.display.Sprite;
import flash.net.navigateToURL;
import flash.net.URLRequest;
import flash.net.URLVariables;
public class NavigateToURLExample extends Sprite {
public function NavigateToURLExample() {
var url:String = "http://www.adobe.com";
var request:URLRequest = new URLRequest(url);
}
}
}
Как это дело к кнопке прикрутить? :)
DRAGOnoid
24.04.2008, 14:37
прикрепить слушатель к кнопке
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.navigateToURL;
import flash.net.URLRequest;
import flash.net.URLVariables;
public class NavigateToURLExample extends Sprite {
public function NavigateToURLExample() {
this.myButton.addEventListener(MouseEvent.CLICK, this.navigateToURL);
}
public function navigateToURL() {
var url:String = "http://www.adobe.com";
var request:URLRequest = new URLRequest(url);
navigateToURL (request, "_blank");
}
}
}
в этом случае у тебя на сцене есть кнопка с именем "myButton"
а NavigateToURLExample - это Dociment Class
Спасиб большое! Только оно мне почему-то выдает следующую ошибку: "1037: Packages cannot be nested." Как быть?
DRAGOnoid
25.04.2008, 22:50
моя бага - писал руками, вот поправил рабочий код
--- содержимое NavigateToURLExample.as ---
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class NavigateToURLExample extends Sprite {
public function NavigateToURLExample() {
this.myButton.addEventListener(MouseEvent.CLICK, this.openURL);
}
public function openURL(event:MouseEvent) {
var url:String = "http://www.adobe.com";
var request:URLRequest = new URLRequest(url);
navigateToURL (request, "_blank");
}
}
}
То же самое пишет. Может я что не так делаю, поправь если неправильно. Этот код йа пишу на экшне фрейма (у меня он один идет через весь мувик), там же лежит кнопка. Нажимаю паблиш и пишет ту же ошибку "1037: Packages cannot be nested."
DRAGOnoid
28.04.2008, 23:13
теперь ясно, "если бы ты читал форум" как любят говорить наши любимые модераторы, то знал бы что код во фреймах теперь писать не принято, для этого делается отдельный *.AS файл в нём пишется код и цепляется куда надо, в нашем случае это Document Class ... подробнее об этом всём пишетсся с самого начала этого топика - почитай. Если опять будет не понятно - плохо ( но всёравно спроси, лиш бы не лишнее.
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/FlaAC3/mur_cube_text_mod.swf
http://kind-armadillo.pochta.ru/FlaAC3/mur_cube_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/lesson_button/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/php/GaleryScoresText.txt
http://dnadillo.dn.ua/mur_gallery/php/mur_galery_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
Какая разница между super и super() ?
Какая разница между 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
тоесть я потом создаю экземпляры класса по кол-ву равным с кол-вом картинок. Ладно буду пытаться разбираться с классами.
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 :(
А вы думаете, что флеш может мгновенно после старта загрузки определить размер файла?
myContainer.addChild(loader);
trace(loader.contentLoaderInfo.bytesTotal);
так? но всё равно и bytesTotal и bytesLoaded возвращает 0 :(
Нет, не так. В сути ничего не изменилось, вы пытаетесь получить размер файла ещё до начала загрузки оного. А оно (начало загрузки) начнется гораздо позже выполнения любого кода в myLoad.
Reflection
21.05.2008, 13:53
на сколько я понимаю нужно добавить loader.addEventListener(ProgressEvent.PROGRESS, hendleprogress);
У LoaderInfo есть и другие события.
ура, заработало :) спасибо событиям 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
а ссылка есть? :)
или где купить
Читай "Essential ActionScript 3.0 by Colin Moock", глава первая, там все очень доходчиво, правда на английском. :)
http://www.amazon.co.uk/Essential-ActionScript-3-0-Colin-Moock/dp/0596526946/?ie=UTF8&s=books&qid=1211573765&sr=8-1
Пипл, на что реагирует "Event.OPEN" ? т.е. OPEN чего флешки или начала загрузки в другую флешку?
BlooDHounD
05.06.2008, 01:47
CEBEP, а в хелпе, что написано?
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/ActionScriptLangRefV3/flash/events/Event.html#OPEN
Felicast
07.06.2008, 14:31
у меня есть кнопка (класс унаследован от SimpleButton). в дизайнере я добавляю на нее текстовое поле.
подскажите пожалуйста как мне из AS добраться до этого текстового поля.
Felicast
07.06.2008, 16:26
вопрос снят
(btn.upState as Sprite).getChildAt(0);
Здравствуйте.
На странице 13 топика предложен тест производительности при явном указании типа переменной и без него.
Не бывает таких моментов. На скорость это основательно влияет:
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 файла читать/сохранять данные на локальный диск?
при выполнении в Adobe CS3 Professional результаты примерно 364 и 48.
при выполнении в FlashDevelop получается 1780 и 1320.
подскажите - в чём дело?
В том, что тестирование проводится в debug-режиме.
и ещё вопрос: может ли локальное приложение из .swf файла читать/сохранять данные на локальный диск?
Не может.
В том, что тестирование проводится в debug-режиме.
ясно. спасибо.
Не может.
Как в таком случае можно реализовать хранение таблицы результатов, сохранений? В справке нашёл описание SharedObject (http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/net/SharedObject.html). У него есть возможность хранить данные как локально, так и на сервере. Правильно ли я понимаю, что правильным будет использовать его?
Или Flash подразумевает всё-таки хранение данных на сервере?
Как в таком случае можно реализовать хранение таблицы результатов, сохранений? В справке нашёл описание SharedObject (http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/net/SharedObject.html). У него есть возможность хранить данные как локально, так и на сервере. Правильно ли я понимаю, что правильным будет использовать его?
Или Flash подразумевает всё-таки хранение данных на сервере?
Чтобы сохранять удаленный SharedObject, вам потребуется как минимум FMS на сервере. Проще использовать любые другие методы сохранения данных на сервер.
В 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 на сервере. Проще использовать любые другие методы сохранения данных на сервер.
У меня нет сервера )
Я только знакомлюсь с флешем и хочу написать небольшую игру. На будущее интересуюсь - как локально сохранять таблицу результатов к примеру..
На будущее интересуюсь - как локально сохранять таблицу результатов к примеру..
private var so:SharedObject;
so = SharedObject.getLocal('GameMemory');
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
при маусдаун startDrag(), при маусап stopDrag()
никаких телодвижений по сохранению координат не надо.
блин это я так знаю, напиши мне класс для кнопки с обоими этими функ-иями, проблема заключатся в том, что после 2.0 я понять не могу, как объект кнопку (не как класс) а именно как объект присвоить какой-нибудь переменной и уже драгать и дроппать. Объясните мне.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.