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)一直裝不好,故有一問。