FP10.2 正式發怖啦,
這次最主要的新功能, 就是 StageVideo 類別
Adobe 官網教學與介紹
線上Preview
StageVideo API Reference
說明一下使用方法:
一樣是使用 NetStream 連線
之前的版本是使用 Video 類別, attachNetStream( NetStream );
改成對 StageVideo attachNetStream, 其他的偵聽進度與播放停止等功能, 都和之前一樣。
想要嘗鮮的同學你需要
Flex 4.5 SDK – build 4.5.0.18623 available
解開後找到 xxxx\frameworks\libs\player
目前只有10.2的資料,copy一份,並命名為10.1, 這樣是為了讓目前的flashdevelop版本能夠發怖
開啟flashdevelop, 在 Properties 面版 Compiler Options裡的 Additional Compiler Options
加入 -swf-version=11
這樣就可以發怖成功了。
轉載請註明出處
這次最主要的新功能, 就是 StageVideo 類別
Adobe 官網教學與介紹
線上Preview
StageVideo API Reference
說明一下使用方法:
一樣是使用 NetStream 連線
之前的版本是使用 Video 類別, attachNetStream( NetStream );
改成對 StageVideo attachNetStream, 其他的偵聽進度與播放停止等功能, 都和之前一樣。
想要嘗鮮的同學你需要
Flex 4.5 SDK – build 4.5.0.18623 available
解開後找到 xxxx\frameworks\libs\player
目前只有10.2的資料,copy一份,並命名為10.1, 這樣是為了讓目前的flashdevelop版本能夠發怖
開啟flashdevelop, 在 Properties 面版 Compiler Options裡的 Additional Compiler Options
加入 -swf-version=11
這樣就可以發怖成功了。
轉載請註明出處
package { package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.media.*; import flash.net.*; //import net.hires.debug.*; /** * ... * @author milkmidi */ public class StageVideoDemo extends Sprite { // youtube Iron Man2 private static const VIDEO_URL:String = "http://v1.lscache7.c.youtube.com/videoplayback?" + "sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Coc%3AU0dYTFNST19FSkNNOF9LTFNH&" + "fexp=908607&itag=37&ipbits=0&signature=53BA5F94D1C8D46E51D5C571F5A7F5D4BFF56844" + ".BEC86A8A482EC4B39B068AD5359A6F1C8D487566&sver=3&ratebypass=yes&expire" + "=1297371600&key=yt1&ip=0.0.0.0&id=b224200fda8e851b&begin=112292"; private var sv:StageVideo; public function StageVideoDemo() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE , init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); stage.addEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, onStageVideoState) stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.addEventListener(Event.RESIZE , resizeHandler); //addChild(new Stats); } private function onStageVideoState(e:StageVideoAvailabilityEvent):void { var _available:Boolean = (e.availability == StageVideoAvailability.AVAILABLE); trace(e,_available); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus); ns.client = { onMetaData:function( o:Object ):void { //trace(o.duration); resizeHandler(); } }; var v:Vector.= stage.stageVideos; if ( v.length >= 1 ) { sv = v[0]; } sv.addEventListener(StageVideoEvent.RENDER_STATE, stageVideoStateChange); sv.attachNetStream(ns); ns.play(VIDEO_URL); } private function stageVideoStateChange(e:StageVideoEvent):void { trace(e); } private function resizeHandler (e:Event = null):void { sv.viewPort = getVideoRect(sv.videoWidth, sv.videoHeight); } /** * 等比縮放, centerInside * @param pWidth * @param pHeight * @return */ private function getVideoRect(pWidth:uint, pHeight:uint):Rectangle { var _sw :int = stage.stageWidth; var _sh :int = stage.stageHeight; var _videoWidth :uint = pWidth; var _videoHeight :uint = pHeight; var _scaling :Number = Math.min ( _sw / _videoWidth, _sh / _videoHeight ); _videoWidth *= _scaling; _videoHeight *= _scaling; var _posX:uint = _sw - _videoWidth >> 1; var _posY:uint = _sh - _videoHeight >> 1; var _videoRect:Rectangle = new Rectangle(); _videoRect.x = _posX; _videoRect.y = _posY; _videoRect.width = _videoWidth; _videoRect.height = _videoHeight; return _videoRect; } private function onNetStatus(e:NetStatusEvent):void { trace(e); } } }
留言
因為我的flexsdk(4.5.0.18623)一直裝不好,故有一問。