![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 13
|
Добрый день всем!
Спасибо что заглянули в топик. Есть несколько задач которые я самостоятельно не могу решить уже несколько дней, по этому прошу помощи у специалистов по флешу. Небольшой флеш сайт на ас3 Все исходники и код предоставлю, если понадобится ЗАДАЧИ, КОТОРЫЕ МНЕ НЕ УДАЛОСЬ РЕШИТЬ: 1-я задача, которая стоит передо мной. Этот вопрос не самый главный, думаю повозившись я смогу его сам реализовать, но все же если кто то подскажет буду благодарен. Я раньше работал в ас2, там можно было прям на кнопке поставить код. Сейчас же столкнулся с проблемой, что не могу подгрузить через лоадер содержимое. Вот пример: Как это возможно реализовать на ас3? И куда поместить код... Понимаю, вопрос может детский, но я аниматор в основном, дизайнер. Программера флеш с фирмы уволили, и повесили на меня реализацию проекта. Боюсь, если не справлюсь, мну тож уволят ![]() 2-я задачаВ сайте таким образом реализовано меню и переход по стр. var menu_label:Array = new Array("Израиль", "Полезная",
"Север", "Юг",
"Восток", "Запад");
var total:Number = menu_label.length;
var i:Number = 0;
var page:Number;
var main_menu:MovieClip = new MovieClip();
stage.addChild(main_menu);
for( i = 0; i < total; i++ )
{
var btn = new flashmo_button();
btn.name = "btn" + i;
btn.x = fm_button.x;
btn.y = fm_button.y + 99 * i;
btn.item_no = i;
btn.addEventListener( Event.ENTER_FRAME, btn_enter );
var each_substring:Array = menu_label[i].split("|");
btn.flashmo_button_label.fm_label.text = each_substring[0];
btn.item_url = each_substring[1];
main_menu.addChild(btn);
}
Мне необходимо ввести лоадер, и подменю будут грузится через него отдельными флешками. (способ в первом вопросе) Вопрос, возможно ли как то реализовать переход в тексте на отдельные меню или подменю? То есть в тексте скажем будет слово-ссылка, при нажатии на которое - переход на нужный раздел/подраздел.[/MORE] 3-я, последняя задача.Нужно что бы данная флешка грузилась на других сайтах. То есть типа что то типа какого то кода, например когда вставляешь счетчик на сайт, дают определенный код, который будет грузится только на определенном домене. Я должен сделать тоже что то подобное. То есть: - что бы этот код можно было вставлять на сайт, и он грузил флешку - желательно что бы не было прямой ссылки на флешку в коде, в идеале, что бы нельзя было скачать флешку (раньше это делал через сервер, но уже откровенно говоря не помню точно как... )- защита по домену (индивидуальный код, который будет грузится только на опред. домене) - самое важное что бы этими кодами можно было управлять, то есть прекратить работу одного кода, или возобновить работу. Понимаю этот вопрос очень сложный, но хоть подскажите, в какой степи копать, с чего начать... ЗА ВСЕ ОТВЕТЫ ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО! В ответ могу помочь с дизайном и анимацией, если кому нужно... |
|
|||||
|
Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
|
1 вопрос:
создайте Main.as package { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class Main extends Sprite { public function Main():void { super(); addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(event:MouseEvent):void { mcPageLoader.loadMovie("s_1.swf"); } } } |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 13
|
Понял, спасибо, буду пробовать...
|
|
|||||
|
ветеран форума
|
mickfallout, ваш ответ это апрельская шутка?
Откуда в as3 вдруг loadMovie() и конструкторы как бы не должны иметь типа. Если уж беретесь помогать, то делайте это правильно. Deliri, вы слишком многого сразу хотите, и от вас начальство слишком многого сразу хочет. В as3 уже нельзя писАть код на клипах как в as2, но в кадрах можно, уж тем более на первых парах как у вас. 1-я задача: var loader:Loader = new Loader(); // функция loader_completeHandler выпонится когда згрузится что-то в лоадер loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler); // функция loader_progressHandler выпонияетя по мере згрузки чего-либо в лоадер // т.е это то самое место для индикации загрузки (прелоадер) loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loader_progressHandler); // начинаем загрузку loader.load( new URLRequest("s_1.swf") ); function loader_progressHandler(event:ProgressEvent):void { // обновляем прелоадер trace("Процент загрузки: " + Math.ceil(100 * event.bytesLoaded / event.bytesTotal) + "%"); } function loader_completeHandler(event:Event):void { loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loader_completeHandler); loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, loader_progressHandler); // добавляем загруженный s_1.swf (или что там грузилось в loader) в mcPageLoader // mcPageLoader уже должен быть на сцене, если еще нет, то значит нужно его добавить туда addChild(mcPageLoader); mcPageLoader.addChild(loader); } // стиль ссылки при наведении мыши var hover:Object = new Object(); hover.fontWeight = "normal"; // можно bold если нужен жирный hover.color = 0xFF0080; // цвет ссылки при наведении hover.textDecoration = "none"; // стиль ссылки var link:Object = new Object(); link.fontWeight = "normal"; // можно bold если нужен жирный; link.textDecoration = "underline"; link.color = 0x0000FF; // цвет ссылки в обычнм состоянии var style:StyleSheet = new StyleSheet(); style.setStyle("a:link", link); style.setStyle("a:hover", hover); // текстовое поле с именем tfText tfText.styleSheet = style; tfText.htmlText = "<a href='event:chtototut'>Текст внутренней ссылки</a>"; tfText.addEventListener(TextEvent.LINK, text_linkHandler); // текстовое поле с именем tfText2 tfText2.styleSheet = style; tfText2.htmlText = "<a href='http://google.com'>Текст ссылки c переходом на URL</a>"; function text_linkHandler(event:TextEvent):void { trace(event.text); // выведет chtototut //осуществвляете действия по клику на tfText } Вообще все эти примеры элементарные можно найти в оф документации, она и на русском присутствует. Разбейте задачу на подзадачи и постепенно их борите.
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 13
|
Mur4ik!
Выглядет крайне многообещающе!!! Спасибо огромное, буду разбираться сейчас что и как! Спасибо еще раз! |
|
|||||
|
Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
|
Извиняюсь, с конструктором ошибся, да(хотя в некоторых компиляторах это вроде срабатывает). а насчёт loadMovie - подумал что это метод класса написанного програмистом
|
|
|||||
|
Регистрация: Feb 2011
Сообщений: 13
|
по поводу loadMovie попробовал код, но он просто добавляет другой swf на сцену. раньше в AS2 swf полностью заменялись если загрузить в root. на Кирупе я нашел как это сделать, только там нет исходников, а я классами пользоваться не умею. Поэтому создал 2 класса с этими кодами(первый назвал NpLoadMovie.as, второй loader.as), изменил имена файлов на свои, в свой fla на кадре написал: "import loader" и не знаю что делать дальше... мои swf лежат в одной папке с классами.
You can try something like this, to load in displayObjects, in the AS2 loadMovie style; package { import flash.events.Event; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.events.EventDispatcher; import flash.net.URLLoader; import flash.net.URLRequest; import flash.display.Loader; import flash.display.DisplayObjectContainer; import flash.display.DisplayObject; import flash.events.EventDispatcher; /** * <strong>NpLoadMovie</strong> */ public class NpLoadMovie extends EventDispatcher { //-------------------------------------- // STATIC VARS //-------------------------------------- private static var instance:NpLoadMovie; //-------------------------------------- // PRIVATE VARS //-------------------------------------- private var _itemURL:String; private var _itemContainer:DisplayObjectContainer; private var _removeExistingChildren:Boolean; //-------------------------------------- // CONSTRUCTOR //-------------------------------------- public function NpLoadMovie(enforcer:SingletonEnforcer) { } //-------------------------------------- // CONSTRUCTOR //-------------------------------------- /** * Gateway into class. Query this method to check for any other existing instances of this class. * @return Class */ public static function getInstance():NpLoadMovie { if (NpLoadMovie.instance == null) { NpLoadMovie.instance = new NpLoadMovie(new SingletonEnforcer()); } return NpLoadMovie.instance; } /** * * This public method allows for the loading of an DisplayObject. * @param String representing the URL of the file you want to load. * @param DisplayObjectContainer to load content into. * @param Boolean (Default is true) indicating whether or not to remove all existing children of target DisplayObjectContainer. * <p>Handle 'cache busting' outside of this class.</p> * @example Flash CS3 Document Class based truncated Demo of loading an file. * <listing version="3.0"> * import NpLoadMovie;// singelton external DisplayObject loading class * * * private function loadContentItem() { * NpLoadMovie.getInstance().loadMovie("images/image001.jpg?nocache=" + getTimer()); * NpLoadMovie.getInstance().addEventListener(Event.COMPLETE, handleContentLoad); * } * * * * private function handleContentLoad(event:Event):void{ * NpLoadMovie.getInstance().removeEventListener(Event.COMPLETE,handleContentLoad); * trace("Content loaded"); * } * * * </listing> */ public function loadMovie(itemURL:String, itemContainer:DisplayObjectContainer, removeExistingChildren:Boolean = true):void { _itemURL = itemURL; _itemContainer = itemContainer; _removeExistingChildren = removeExistingChildren; //load the actual content loadContent(); } //-------------------------------------- // // PRIVATE METHODS // //-------------------------------------- //remove any content existing in target displayObjectContainer private function cleanOutContainer(loadedContent:DisplayObject):void { //remove all children of parent container while(_itemContainer.numChildren > 0) { _itemContainer.removeChildAt(0); } _itemContainer.addChild(loadedContent); } //load the image private function loadContent():void { var _loader:Loader = new Loader(); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, iOErrorHandler); _loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); var request:URLRequest = new URLRequest(String(_itemURL)); try { _loader.load(request); } catch (error:ArgumentError) { trace("An ArgumentError has occurred." + error); } catch (error:SecurityError) { trace("A SecurityError has occurred." + error); } catch (error:Error) { trace("Sorry, a Error has occurred when attempting to load content " + error); } } //-------------------------------------- // // EVENT HANDLERS // //-------------------------------------- //-------------------------------------- // HANDLE SUCCESSFUL CONTENT LOAD //-------------------------------------- private function loaded(event:Event):void { if (_itemContainer.numChildren > 0) { if(_removeExistingChildren) { cleanOutContainer(event.target.content); }else{ _itemContainer.addChild(event.target.content); } } else { _itemContainer.addChild(event.target.content); } //dispatch the loaded event dispatchEvent(event); } //-------------------------------------- // HANDLE IO ERRORS //-------------------------------------- private function iOErrorHandler(event:IOErrorEvent):void { trace("There has been an ioErrorHandler: " + event); } //-------------------------------------- // HANDLE SECURITY ERRORS //-------------------------------------- private function securityErrorHandler(event:SecurityErrorEvent):void { trace("There has been an security error: " + event); } //-------------------------------------- // HANDLE PROGRESS EVENT //-------------------------------------- private function progressHandler(event:ProgressEvent):void { dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS,false,true,event.bytesLoaded, event.bytesTotal)); } } } class SingletonEnforcer { } //AS3/////////////////////////////////////////////////////////////////////////// // // Copyright 2009 __noponies__ // //////////////////////////////////////////////////////////////////////////////// package { import flash.events.Event; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.display.MovieClip; import flash.utils.getTimer; import flash.display.Stage; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.display.StageDisplayState; import NpLoadMovie; public class Main extends MovieClip { //-------------------------------------- // CONSTRUCTOR //-------------------------------------- /** *@constructor * Document Class, no arguments here... */ public function Main() { //listen for the init event for this swf loading... this.loaderInfo.addEventListener(Event.INIT,loaderInit); } //-------------------------------------- // // EVENT HANDLERS // //-------------------------------------- //-------------------------------------- // LOADER INFO COMPLETE HANDLER, LOAD XML. SET STAGE PROPS //-------------------------------------- private function loaderInit(event:Event=null) { //stage props stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; //set the stage frame rate. stage.frameRate = 31; //load in some content NpLoadMovie.getInstance().loadMovie("content/test.swf",cont); NpLoadMovie.getInstance().addEventListener(ProgressEvent.PROGRESS,handleLoadProgress); //load in some more content stage.addEventListener(MouseEvent.CLICK,handleStageClick); } private function handleStageClick(event:MouseEvent):void { stage.removeEventListener(MouseEvent.CLICK,handleStageClick); NpLoadMovie.getInstance().loadMovie("content/panel05.jpg",cont); } private function handleLoadProgress(event:ProgressEvent):void { //trace(event) } } Последний раз редактировалось Blizzart; 15.02.2012 в 01:34. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|