![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 33
|
Здравствуйте!
Крайне необходимы ваши советы и где-то, конечно, помощь. Как начинающий, думаю мне не имеет особого смысла начинать изучать старые версии ActionScript . Но неприятность, как вы и без меня знаете, заключается в том, что для новой третьей версии достаточно мало примеров и туториалов, как в общем и литературы, что нельзя сказать про предыдущие версии(для последних в нэте примеров тонны, выбирай – не хочу). Если для людей бывалых, это не составляет особой проблемы, то для новичков, а в особенности, кто до этого вообще практически программированием не занимался, это является весомым препятствием для скорейшего усвоения материала. Как студенту, мне данный момент особенно критичен. Поэтому прошу вашего содействия, т.к. темы которые я хотел бы поднять(поиск тщательно использовался, не говоря уже о таком же изучении ФАКа с правилами), по моему скромному мнению, достаточно начального уровня и как мне кажется не займут много вашего внимания и будут крайне полезными как для меня, так и для других новичков. Ну, начнём по пунктам: 1)Прелоадер. По примеру( http://flasher.ru/forum/showthread.p...147#post535147 ) в факе сделал прелоадер. Но имеется неприятная проблема, а точнее две. Первая. Показ SWFмувика, который усердно подгружал прелоадер, начинается не с первого, а с того кадра , как если отнять время предзагрузки от общего время демонстрации SWFролика. То есть, проще говоря, такое ощущение, что мувик начинает проигрывание во время работы прелоадера. А когда предзагрузка заканчивается, отображается только оставшееся время проигрывания. Вот линк с примером( http://www.zone-rouge.net/pln/01.html ), который наглядно покажет, что я имею в виду. После первой загрузки отобразится только последняя секунда-две ролика. А если потом обновить страницу, то уже из кэша ролик подгрузится сразу и проигрывание будет корректным. Подскажите, что необходимо добавить в код чтобы убрать данную засаду? И вторая засада. В самом начале, ещё до появления загрузчика, появляется белый кадр на пол секунды, максимум одну. От чего зависит это? Без прелоадера такого белого кадра не наблюдается, но и ролик «тупит», т.к. до конца не загрузился. SWFка представляет из себя простое чередование растровых изображений. Вот линк на все исходники. http://www.zone-rouge.net/pln/test.rar А ниже сам код прелоадера. Отличия от примера минимальны, но думаю всё же лучше скопировать его сюда. package {
import flash.display.Sprite;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.ProgressEvent;
public class Test extends Sprite {
private var loader:Loader = new Loader();
private var loadStatus:TextField = new TextField();
private var textformat:TextFormat = new TextFormat;
private var request:URLRequest = new URLRequest("mc01.swf");
public function Test() {
loader.load(request); loader.contentLoaderInfo.addEventListener(Event.OPEN,displayPreloader); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,updatePreloader); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,displayImage);
}
private function displayPreloader(evt:Event):void {
loadStatus.autoSize = TextFieldAutoSize.LEFT;
addChild(loadStatus);
}
private function updatePreloader(evt:ProgressEvent):void {
loadStatus.text = "loaded:"+evt.bytesLoaded+" from "+evt.bytesTotal;
loadStatus.x = 250;
loadStatus.y = 150;
textformat.font = "Helvetica";
textformat.color = 0xFF0000;
textformat.size = 24;
loadStatus.setTextFormat(textformat);
}
private function displayImage(evt:Event):void {
removeChild(loadStatus);
addChild(loader);
}
}
}
2)Подгрузка SWF файла Есть необходимость по окончании проигрывания SWFфайла о котором шла речь выше, подгрузить(отобразить) другой SWFфайл(меню сайта с кнопками и тому подобное), при этом выгрузить первый. 3)Изменение вида курсора. В моём случае хочется сделать курсор следующего вида. Две перпендикулярных пересекающиеся(разумеется под прямым углом) линии, начинающиеся от сторон периметра объекта и пересекаются в месте предполагаемого курсора. При перемещении курсора, координаты их пересечения соответственно изменяются. Т.е. пересечение это и будет являться индикатором курсора, вертикальная линия перемещается по горизонтали, а горизонтальная, соответственно, по вертикали. А объект представляет из себя либо область отображения(stage), либо мувиклип неправленой формы размером чуть меньше области отображения, в случае с мивиклипом, линии, разумеется, не должны выходить за его периметр. Но если курсор выходит за пределы периметра, то он становится обычной мышиной стрелкой, а пересечение линий бы оставалось в том месте внутри периметра, где в последний раз находился курсор и как только курсор возвращается в периметр он обратно становится интерактивным пересечением линий. Конечно, хочется увидеть примеры кода для обоих случаев, как для мувика так и для всего стейджа. Приведу наглядный пример: мувиклип представляет из себя видоискатель бинокля овальной формы, как в играх. Когда в него видна цель, она фиксируется на видоискателе двумя пересекающимися линиями. В нашем случае цель, - это курсор. Я надеюсь, объяснения мои были предельно ясны и благодарю за уделённое этой теме внимание. Буду крайне признателен, за любую помощь. PS поиск использовал, но всё же, есть вероятность, что, что-то пропустил. В любом случае эта тема достаточно индивидуальна, но тем не менее я уверен, что она будет полезна не только мне. |
|
|||||
|
Цитата:
Это враньё. Если английский совсем не знаете, то прочтите "важные" темы в разделе в который запостили. http://www.flasher.ru/forum/showthread.php?t=85645 Если знаете то спросите у гугла (AS3 tutorials)
__________________
Сам себе репортер |
|
|||||
|
Соглясен с terbooter. Примеров много посетите сайт например
http://www.flashandmath.com Там афигенные фишки от простейших слайд шоу и других не слайд, но тоже шоу, до трехмерных навроченных меню с использованием стандартной комплектации AS3 все с исходниками. Это еще без учета того, что есть еще http://www.kirupa.com Где в разделе AS3 немеряно всего. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 33
|
terbooter Спасибо за ссылку, но я там уже бывал и конкретных примеров не видел, но, тем не менее, она у меня в избранных в любом случае и думаю в скором времени понадобится ни один раз. А вот за гугль - вдвойне спасибо! А именно за пример поискового запроса. Он оказался белее удачным, хотя и очень похож на мои. Искал по-разному, по-всякому.
В общем спасибо за ответ. Alex Lexcuk Спасибо большое за ссылки! Полезные сайты. Обычным макаром, я бы ещё, наверное, нескоро бы на них наткнулся. To All Но всё же осмелюсь ещё раз спросить про первый пункт(прелоадер), в чем там может быть проблема? А так в целом, вроде разобрался. Но чувствую всякими уточнениями ещё не раз вас потревожу. |
|
|||||
|
Цитата:
Последний раз редактировалось ulik; 20.05.2008 в 12:56. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 33
|
ulik Спасибо за сообщение!
Да, то что ролик надо остановить и запустить когда надо,- это я допёр, только с реализацией было туго. Попытался сделать как вы сказали: Добавил нужный класс затем в функцию onCompleteHandler(в данном примере насколько я понимаю она называется displayImage) вставил всё как вы сказали: но выдаётся следующая ошибка Error #1069: Property play not found on flash.display.LoaderInfo and there is no default value. at Test02/::displayImage() Очень похоже на результаты моих предыдущих попыток(если я, конечно, правильно истолковываю смысл ошибки). Пытался запустить ролик после загрузки, но скрипт его не находил(или я плохо его обозначал). Так на этом всём и кончилось и я решил написать сюда. |
|
|||||
|
LoaderInfo, а вам нужен Loader.content
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 33
|
Psycho Tiger
так? loader.Loader.content.addEventListener(Event.COMPLETE,onCompleteHandler);
private function onCompleteHandler(event:Event):void
{
event.target.play();
}
на это выдаётся следуещее: 1119: Access of possibly undefined property Loader through a reference with static type flash.display:Loader. ещё пробовал изменить вот так: Результат: TypeError: Error #1009: Cannot access a property or method of a null object reference. at Test02$iinit() |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 33
|
Итого, такого вида код
package {
//импортируем нужные нам классы
import flash.display.Sprite; // это базовый класс для нашего root'а
import fl.motion.Animator;
import flash.display.Loader; // в экземпляр данного класса будем грузить картинку
import flash.display.LoaderInfo; // из экземпляра данного класса, будем брать информацию
import flash.text.TextField;
import flash.text.TextFormat;// в текстовом поле, будем отображать процесс загрузки
import flash.text.TextFieldAutoSize; // тут константы вариантов значения свойства textField.autoSize
import flash.net.URLRequest; // экземпляр данного класса, будет хранить в себе адресс картинки
import flash.events.Event; // это событие
import flash.events.ProgressEvent;
public class Test02 extends Sprite {
//создаем экземпляр Loader
private var loader:Loader = new Loader();
//создаем экземпляр TextField
private var loadStatus:TextField = new TextField();
//создаем экземпляр URLReques
private var request:URLRequest = new URLRequest("swf011.swf");
private var myFormat:TextFormat = new TextFormat();
// конструктор
public function Test02() {
//Начинаем загрузку
loader.load(request);
// подписываем обработчики события
loader.contentLoaderInfo.addEventListener(Event.OPEN,displayPreloader);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,updatePreloader);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,displayImage);
loader.Loader.content.addEventListener(Event.COMPLETE,onCompleteHandler);
}
//наши обработчики событий
private function displayPreloader(event:Event):void {
//добавляем текствое поле
loadStatus.autoSize = TextFieldAutoSize.LEFT;
addChild(loadStatus);
myFormat.font = "Helvetica";
myFormat.color = 0xFF0000;
myFormat.size = 24;
loadStatus.setTextFormat(myFormat);
loadStatus.x = 300;
loadStatus.y = 150;
}
private function updatePreloader(event:ProgressEvent):void {
//изменяем информацию в процессе загрузки
loadStatus.text = "loaded:"+event.bytesLoaded+" from "+event.bytesTotal;
myFormat.font = "Helvetica";
myFormat.color = 0xFF0000;
myFormat.size = 24;
loadStatus.setTextFormat(myFormat);
loadStatus.x = 300;
loadStatus.y = 150;
}
private function displayImage(event:Event):void {
//удаляем текстовое поле, и добавляем само изображение
removeChild(loadStatus);
addChild(loader);
}
private function onCompleteHandler(event:Event):void
{
event.target.play();
}
}
}
|
|
|||||
|
Регистрация: Mar 2008
Сообщений: 57
|
Попробуйте так, а вобще старайтесь в дальнейшем локализовывать проблему, а то прочитывать весь код нет никакого желания..
Последний раз редактировалось max_oil; 20.05.2008 в 19:16. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|