Просмотр полной версии : Своя компонента Flex
Здравствуйте.
Возможно ли создать свою компоненту Flex на основании класса fl.video.VideoPlayer?
Если да, то как, помогите пожалуйста
Пакет fl поставляется только с Flash Professional. Во флексе есть гораздо более мощный фреймворк OSMF. Также можете сделать свой компонент на основе spark.components.VideoPlayer (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/spark/components/VideoPlayer.html) или просто его скинировать.
Добавлено через 1 минуту
P.S. Я вам уже говорил о нем в предыдущем вашем топике.
Да, спасибо, но в компоненте spark нет возможности attachNetStream, которая мне очень нужна, и вроде нет playHeadTime и totalTime свойств. Мне надо исходить из уже существующей архитектуры чужого приложения, получать net stream, как-то проигрывать во флекс и отслеживать время, загрузку...
и вроде нет playHeadTime
currentTime
totalTime свойств.
duration
Проблема с работой с NetStream самая важная к сожалению
Добавлено через 4 минуты
Если ловить события от NetStream, то можно все наверно организовать. Сатачить его VidoPlayer-у, а сам VideoPlayer addChild-ом добавить на VideoDisplay. Но какие события ловить, которые по сути во время всей загрузки периодически должны поступать. Пробую CuePoint, не реагирует вроде мой NetStream
Добавлено через 36 минут
Вот пробую ловить событие fl.video.VideoProgressEvent ..... Нет реакции в приложении никакой. Но оно же генерируется, если в приложении есть компонента VideoPlayer..
Для потокового видео (записанное потоковое видео, потоковое видео в реальном времени или видео с разной скоростью передачи) свойством источника является объект DynamicStreamingVideoSource. Если требуется воспроизвести записанный или потоковый видеоролик в реальном времени без поддержки множественной скорости передачи, можно передать URL-адрес строки, указывающий на видеопоток. Однако в этом случае тип streamType будет рассматриваться как any, и пользователь не сможет управлять потоком с такой же эффективностью, как при управлении объектом DynamicStreamingVideoSource.
Не оно?
Не дошло, добрый человек (
Мне хочется сейчас во Flex (в скриптовой части его mxml файла) отловить событие Progress, которое должен вроде генерировать videoPlayer, посаженный как child VideoDisplay компоненты.
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
import fl.video.VideoEvent;
import fl.video.VideoProgressEvent;
...
private var mute : Boolean = false;
public var nc:NetConnection = new NetConnection();
public var vp:fl.video.VideoPlayer=new fl.video.VideoPlayer();
public var ns:NetStream;
private function play():void
{
nc.connect(null);
ns= new NetStream(nc);
ns.play("http://www.helpexamples.com/flash/video/water.flv");
vp.attachNetStream(ns);
vp.height=player.height;
vp.width=player.width;
vp.addEventListener( fl.video.VideoProgressEvent.PROGRESS,progress);
player.addChild(vp);
}
public function progress(event:fl.video.VideoProgressEvent):void
{//do somthing
}
</fx:Script>
<mx:VideoDisplay id="player" width="450" height="300" autoPlay="false"/>
<mx:Button label="Play" click="play()"/>
</s:Application>
Что не так, помогите пожалуйста
Добавлено через 1 час 0 минут
Может надо думать в этом направлении
http://alteromusica.blogspot.com/2009/03/custom-events-in-flex.html
Но не знаю как это применить к моему коду ((
Anig
1)CuePoint у вас возникать и не будет, потому что у вас в файле нет никаких CuePoint. Если вам нужны ключевые кадры-то это seekpoint вообще-то.
2) Далее, событие возникает у вас в child-e, а вы пишитесь на родителя. Но это событие не всплывает
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/video/VideoProgressEvent.html
VideoProgressEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, bytesLoaded:uint = 0, bytesTotal:uint = 0, vp:uint = 0)
оттого у вас ничего и не выходит.
Спасибо за отклик.
Уже сижу почти сутки, страшно не соображаю, а сделать надо сегодня...
Помогите пожалуйста.
Вон код приложен наверху.
Как мне это событие поймать-отослать, кому отослать, или еще какое событие...может другое надо..
Я понимаю, что так писать нельзя в форуме, но уже не соображаю.....
Добавлено через 3 минуты
Пишу как тут
http://alteromusica.blogspot.com/2009/03/custom-events-in-flex.html<mx:VideoDisplay id="player" width="450" height="300" autoPlay="false" myCustomEvent="onMyCustomEvent(event);" >
<mx:Metadata>
[Event(name="myCustomEvent", type="fl.video.VideoProgressEvent")]
</mx:Metadata>
</mx:VideoDisplay>
Получаю
<mx:Metadata> is not allowed here
Cannot resolve attribute 'myCustomEvent' for component type mx.controls.VideoDisplay
Добавлено через 18 минут
Уважаемый Krusty
Далее, событие возникает у вас в child-e, а вы пишитесь на родителя. Но это событие не всплывает
Можно тут поподробнее?
Где возникает это событие прогресс, как и на ком мне его отловить?
Вернитесь к старому варианту
ns.addEventListener( fl.video.VideoProgressEvent.PROGRESS,progress);
public function progress(event:fl.video.VideoProgressEvent):void
{
trace("VideoProgressEvent yeahhhh");
}
вот это добавьте-событие ловится?
сейчас попробую, спасибо большое, хотя по-моему и это перепробовано....
И еще, добрый человек, у меня этот trace во FlexBuildere нигде не отображается, что очень отладке мешает.
Как мне за trace следить, простите за тупейший вопрос (((
еще попробуйте на ProgressEvent.PROGRESS подписаться. в netstream, вроде бы, именно это происходит.
ns.addEventListener(ProgressEvent.PROGRESS, on_ProgressEvent);
Добавлено через 1 минуту
сейчас попробую, спасибо большое, хотя по-моему и это перепробовано....
И еще, добрый человек, у меня этот trace во FlexBuildere нигде не отображается, что очень отладке мешает.
Как мне за trace следить, простите за тупейший вопрос (((
Так поставьте дебаг верcию.
Да, попробую поставить
А пока пишу так
public function on_Progress(event:fl.video.VideoProgressEvent):void
{
ns.pause();
}
По идее стрим должен остановиться, но не останавливается, значит функция не вызывается, да?
Так, событие прогресса ProgressEvent.PROGRESS не будет, отмена.
NetConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
вот это вот будет сообщать о статусе потока.
Еще раз-какие события вам нужно слушать?
Добавлено через 1 минуту
У вас, по сути, есть два объекта, в которых происходят события -это NetConnection и NetStream
Мне надо слушать время загруженного стрима и общую продолжительность стрима, передавать это progressbar-u, для отображения процесса загрузки
Добавлено через 2 минуты
ааааа!!!!!!!!!!!!!!!!!! Кжется услышал NetStatusEvent.NET_STATUS!!! Сейчас попробую кодить
В общем, ваша задача такая. Я так понимаю, с дебагом вы разобрались
пишитесь на все события http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html
пишитесь на все события
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/net/NetConnection.html
во всех функциях только выводите
trace(event);
выбираете нужные вам события, и все.
Да, попробую, спасибо огромное!!!
Добавлено через 1 час 56 минут
Уважаемый Krusty, я еще создаю Timer, запускаю, поймать TimerEvent нигде не могу(( Опять в пресловутом приложении. Пожалуйста, посоветуйте, куда события от таймера уходят? На чем их ловить?
Добавлено через 2 часа 59 минут
Понятно. Ловлю на самом таймере.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.