![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2012
Сообщений: 70
|
Добрый день!
Возник вопрос: Как в HTMLLoader обработать клик на ссылку? В идеале надо, чтоб при нажатии на картинку в HTMLLoader на сцену добавлялась внешний swf ролик. Заранее благодарен |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 70
|
простите, но из выше написанного ничего не понял =(
на сцену добавляется HTMLLoader, в него загружается документ хтмл с локального диска, в документе ссылки на видео или слайдшоу. Надо определить по какой ссылке нажали и вывести нужный элемент, подгрузив соответствующий swf файл (плеер или слайдшоу). Пробовал сделать ссылки вот так: а в коде определять нажатие по ссылке с помощью javascript но это не очень подходит мне, потому как могут быть несколько ссылок |
|
|||||
|
У вас есть две возможности, либо добавить обработчик события к каждой ссылке, как вы уже пробовали. Либо подписаться у HTMLLoader на событие LocationChangeEvent.LOCATION_CHANGING, дать вашим ссылкам осмысленный href (id элемента вы в этом событии не получите), в обработчике прописать event.preventDefault() и в зависимости от location уже выполнять определенные действия.
С другой стороны, вам ничего не мешает сделать этот функционал на JavaScript.
__________________
משיח לא בא משיח גם לא מטלפן Последний раз редактировалось alatar; 27.06.2012 в 18:44. |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 70
|
дал ссылке href="playvideo.html"
и добавил слушателя html = new HTMLLoader(); ........... html.addEventListener(LoacationChangeEvent.LOCATION_CHANGING, myFunc); Ничего не выводится Добавлено через 14 часов 31 минуту дайте ссылку на пример, пожалуйста. 2ой день ничего не получается... Гуглил, гугл не сказал ничего =( Последний раз редактировалось Wazzabi; 28.06.2012 в 03:46. |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 70
|
package { import flash.display.Loader; import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Stage; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import flash.net.URLRequest; import flash.html.HTMLLoader; import flash.events.LocationChangeEvent; import com.greensock.*; /** * ... * @author wazzabi */ public class MainWin extends MovieClip { public static var lang:int; private var header:Sprite; private var menu:Sprite; private var contentBG :Sprite; private var homeBtn:Sprite; private var html:HTMLLoader; private var themeId:int; private var flvLoader:Loader; private var flv:MovieClip; public function MainWin(stage:Stage) { stage.showDefaultContextMenu = false; stage.scaleMode = StageScaleMode.SHOW_ALL; stage.tabChildren = false; stage.stageFocusRect = false; stage.focus = stage; stage.quality = "high"; // defalt lang lang = 0; loadScreen(); } private function loadScreen():void { switch (lang) { case 0 : header = new HeaderRus(); menu = new MainMenu(); break; } // zagolovok header.x = 70; header.y = 39; addChild(header); // menu menu.x = 85; menu.y = 150; menu.addEventListener(MouseEvent.CLICK, menuClickHandler, false, 0, true); addChild(menu); // home button homeBtn = new HomeBtn(); homeBtn.addEventListener(MouseEvent.CLICK, homeBtnClickHandler, false, 0, true); loadFLVplayer(); } private function loadFLVplayer():void { flvLoader = new Loader(); flvLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPlayerLoadComplete); flvLoader.load(new URLRequest("MyFVLplayer.swf")); } private function onPlayerLoadComplete(e:Event):void { flvLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onPlayerLoadComplete); trace("flv loaded"); flv = flvLoader.content as MovieClip; } private function menuClickHandler(e:Event):void { trace(e.target.name); contentBG = new ContentPanel(); contentBG.x = 640; contentBG.y = 580; contentBG.alpha = 0; addChild(contentBG); homeBtn.alpha = 0; homeBtn.x = 1113; homeBtn.y = 149; addChild(homeBtn); var timeline:TimelineLite = new TimelineLite(); timeline.append( new TweenLite(menu, 0.6, {x:-900}) ); timeline.append( new TweenLite(contentBG, 0.3, { alpha:1 } ) ); timeline.append( new TweenLite(homeBtn, 0.3, { alpha:1 } ) ); // пока показывает одну тему showThemes(1); } private function showThemes(theme:int):void { html = new HTMLLoader(); html.width = 950; html.height = 585; html.x = 250; html.y = 175; var urlReq:URLRequest = new URLRequest(Config.pagesPath + "hist" + theme + ".html"); html.load(urlReq); //html.addEventListener(LocationChangeEvent.LOCATION_CHANGING, myFunc); html.addEventListener(Event.COMPLETE, htmlLoadComplete); contentBG.addChild(html); } private function htmlLoadComplete(e:Event):void { html.addEventListener(LocationChangeEvent.LOCATION_CHANGING, myFunc); } private function myFunc(e:LocationChangeEvent):void { trace("клик по ссылке"); } function removeFLVPlayer(e:Event):void { flv.removeEventListener("PLAYER_CLOSED", removeFLVPlayer); removeChild(flv); } private function homeBtnClickHandler(e:MouseEvent):void { var timeline:TimelineLite = new TimelineLite(); timeline.append( new TweenLite(contentBG, 0.3, { alpha:0 } ) ) ; timeline.append( new TweenLite(homeBtn, 0.1, { alpha:0 } ) ); timeline.append( new TweenLite(menu, 0.4, {x:85}) ); removeChild(contentBG); } } } После долгих и мучительных поисков получилось сделать только так: Где myFunc выдает следующую строчку "app:/pages/rus/playvideo.html" Ивента Event.LOCATION_CHANGING не нашел. И метод preventDefault() тоже и если страницы playvideo.html не существует на лок.диске переход не осуществится, а если имеется - переходит... Теперь вопрос следующий: Если через ссылку передать переменные, например: как вытащить "video_id=1" или его значение "1"? Копать в сторону рег.выражении? Последний раз редактировалось Wazzabi; 29.06.2012 в 20:04. |
|
|||||
|
Цитата:
Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|