Last active
August 29, 2015 14:02
-
-
Save qhwa/5dcb401ecd3eddec6926 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.alibaba.ad.vas.example | |
| { | |
| import flash.display.*; | |
| import flash.events.*; | |
| import flash.media.*; | |
| import flash.net.*; | |
| import flash.system.*; | |
| import com.alibaba.ad.vas.toolkit.AdManager; | |
| import com.alibaba.ad.vas.vast.model.AdUnit; | |
| import com.alibaba.ad.vas.vpaid.IVPAID; | |
| import com.alibaba.ad.vas.toolkit.AdsRequest; | |
| import com.alibaba.ad.vas.events.AdEvent; | |
| import com.alibaba.ad.vas.events.AdErrorEvent; | |
| /** | |
| * 这个 Demo 演示了利用 VAS 展示一个前贴非线性广告 | |
| */ | |
| public class PrerollLinearExample extends Sprite | |
| { | |
| private const CONTENT_URI:String = 'http://xiaotuhe.com/shares/cec33cf01e28280faa0b/unzip/demo/bunny.flv'; | |
| /** | |
| * 广告VAST模板地址 | |
| */ | |
| private const AD_TAG:String = '../example/vast3-example.xml'; | |
| /** | |
| * 这是正片视频,不是广告视频 | |
| */ | |
| private var _contentStream:NetStream; | |
| /** | |
| * _adManager 是广告SDK的入口,通过 AdManager 可以 | |
| * 控制广告播放的细节,获取广告播放的各类事件。见 | |
| * 下面对 _adManager 的操作 | |
| */ | |
| private var _adManager:AdManager; | |
| public function PrerollLinearExample() | |
| { | |
| if( stage ) { | |
| initApp(); | |
| } else { | |
| addEventListener( Event.ADDED_TO_STAGE, initApp ); | |
| } | |
| } | |
| /** | |
| * 初始化应用程序 | |
| */ | |
| private function initApp(evt:Event = null):void | |
| { | |
| removeEventListener( Event.ADDED_TO_STAGE, initApp ); | |
| Security.allowDomain('*'); | |
| initContent(); | |
| initAd(); | |
| } | |
| private function initContent():void | |
| { | |
| initStage(); | |
| var connection:NetConnection = new NetConnection(); | |
| connection.connect(null); | |
| _contentStream = new NetStream(connection); | |
| _contentStream.addEventListener( AsyncErrorEvent.ASYNC_ERROR, onContentAsyncError ); | |
| var video:Video = new Video(stage.stageWidth, stage.stageHeight); | |
| video.attachNetStream( _contentStream ); | |
| _contentStream.play( CONTENT_URI ); | |
| _contentStream.pause(); | |
| addChild(video); | |
| } | |
| private function initStage():void | |
| { | |
| stage.align = 'left'; | |
| stage.scaleMode = 'noScale'; | |
| } | |
| private function initAd():void | |
| { | |
| _adManager = new AdManager(); | |
| stage.addChild( _adManager.container ); | |
| /** | |
| * 某些情况下,广告管理器会请求内容暂停播放 | |
| * 例如非线性浮出广告被用户点击后,变换为线 | |
| * 性视频时。 | |
| */ | |
| _adManager.addEventListener( AdEvent.CONTENT_PAUSE_REQUESTED, onContentPauseRequest ); | |
| /** | |
| * 某些情况下,广告管理器会请求内容继续播放 | |
| * 例如线性广告与浏览者发生交互后,切换为线 | |
| * 性广告。播放完毕后,恢复到浮出式非线性广 | |
| * 告。此时内容应该恢复播放 | |
| */ | |
| _adManager.addEventListener( AdEvent.CONTENT_RESUME_REQUESTED, onContentResumeRequest ); | |
| /** 当广告播放发生错误时,建议清除广告 */ | |
| _adManager.addEventListener( AdErrorEvent.AD_ERROR, onAdError ); | |
| /** 当广告播放完毕后,建议清除广告 */ | |
| _adManager.addEventListener( AdEvent.ALL_ADS_COMPLETED, onAllAdsComplete ); | |
| /** 当广告被点击后,建议清除广告 */ | |
| _adManager.addEventListener( AdEvent.CLICK_THRU, onAdClicked ); | |
| /** | |
| * 广告数据和模板都已加载,准备播放时会触发这个事件 | |
| * 如果需要知道广告播放时的一些事件,或需要和广告 | |
| * 进行通信时,可以通过这个事件获得广告内容。 | |
| * | |
| * 大部分情况下都不需要监听这个事件。这里为了演示通 | |
| * 过 VPAID 协议控制广告的方式,加上了这个事件监听 | |
| */ | |
| _adManager.addEventListener( AdEvent.LOADED, onAdLoaded ); | |
| // 提供一些广告位的信息,以便服务器端返回 | |
| // 合适的广告内容 | |
| var adsRequest:AdsRequest = new AdsRequest(); | |
| adsRequest.width = stage.stageWidth; | |
| adsRequest.height = stage.stageHeight; | |
| adsRequest.keywords = ['女装']; | |
| adsRequest.tag = AD_TAG; | |
| // 客户端可以调用这个接口对广告禁音 | |
| // adManager.mute(); | |
| // 客户端可以调用这个接口对广告解除禁音 | |
| // adManager.unmute(); | |
| /** | |
| * 用 requestAds 方法,可以稍后手动调用 start 方法 | |
| * 自由控制广告出现的时机 | |
| */ | |
| //_adManager.requestAds( adsRequest ); | |
| /** | |
| * 用 requestAndStartAds 方法,可以自动加载并展示 | |
| * 广告,比较傻瓜式一些 | |
| */ | |
| _adManager.requestAndStartAds( adsRequest ); | |
| } | |
| /** VPAID 接口测试 **/ | |
| private function onAdLoaded( evt:AdEvent ):void | |
| { | |
| var ad:AdUnit = evt.ad; | |
| // 只有 VPAID 互动广告才有值 | |
| if( ad.isVPAID() ) { | |
| trace( ' ------ VPAID Ad loaded:', ad ); | |
| trace( ' - linear: ', ad.adLinear ); | |
| trace( ' - width: ', ad.adWidth ); | |
| trace( ' - height: ', ad.adHeight ); | |
| trace( ' - duration: ', ad.adDuration ); | |
| trace( ' - VPAID version:', ad.handshakeVersion('2.0') ); | |
| ad.initAd( stage.width, stage.height, 'normal', 0, '', ''); | |
| ad.startAd(); | |
| ad.addEventListener( 'AdStart', function(...args):void { | |
| trace('~~~~ Ad Start '); | |
| }); | |
| ad.addEventListener( 'AdRemainingTimeChange', function(...args):void { | |
| trace('~~~~ Ad Remaining Time Change', ad.adRemainingTime ); | |
| }); | |
| ad.addEventListener( 'AdStopped', function(...args):void { | |
| trace('~~~~ Ad Stopped' ); | |
| }); | |
| ad.addEventListener( 'AdClickThru', function(...args):void { | |
| trace('~~~~ Ad Click Through' ); | |
| }); | |
| } | |
| } | |
| /** | |
| * 所有广告都展示完毕时,会触发这个事件 | |
| * 此时可以继续播放正片或其他东西 | |
| */ | |
| private function onAllAdsComplete(evt:Event):void | |
| { | |
| removeAdAndContinueContent(); | |
| } | |
| private function onAdClicked( evt:Event ):void | |
| { | |
| removeAdAndContinueContent(); | |
| //建议暂停内容,等用户从广告目标页回来之后继续播放 | |
| //pauseContent(); | |
| } | |
| private function onAdError(evt:AdErrorEvent):void | |
| { | |
| removeAdAndContinueContent(); | |
| } | |
| /** | |
| * 当发生重大错误,或广告正常播放完毕时,清除广告,继续播放正片 | |
| */ | |
| private function removeAdAndContinueContent():void | |
| { | |
| _adManager.destroy(); | |
| // ...content continue | |
| _contentStream.resume(); | |
| } | |
| private function onContentPauseRequest(evt:AdEvent):void | |
| { | |
| pauseContent(); | |
| } | |
| /** | |
| * 暂停内容,你可以实现自己的暂停方法 | |
| */ | |
| private function pauseContent():void | |
| { | |
| _contentStream.pause(); | |
| } | |
| private function onContentResumeRequest(evt:AdEvent):void | |
| { | |
| resumeContent(); | |
| } | |
| /** | |
| * 恢复内容,你可以实现自己的恢复方法 | |
| */ | |
| private function resumeContent():void | |
| { | |
| _contentStream.resume(); | |
| } | |
| private function onContentAsyncError(evt:Event):void | |
| { | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <VAST version="3.0"> | |
| <Ad id="overlay-1"> | |
| <InLine> | |
| <AdSystem>TANX</AdSystem> | |
| <AdTitle>video</AdTitle> | |
| <Impression> | |
| <![CDATA[http://et.tanx.com/video/impression]]> | |
| </Impression> | |
| <Creatives> | |
| <Creative> | |
| <Linear> | |
| <Duration>00:00:15</Duration> | |
| <TrackingEvents> | |
| <Tracking event="start"><![CDATA[http://et.tanx.com/video?stage=0&pid=mm_2000013007_20278042_20406044&pvid=0aeb88b3000019eb5388350900000697&dsp=2000013007&crid=11111736_20426911_0001_0&t=D&s=M&tp=P&k=689fc467055c26dc]]></Tracking> | |
| <Tracking event="start"><![CDATA[http://10.232.136.30/log.php?cmd=start]]></Tracking> | |
| <Tracking event="start"><![CDATA[http://10.232.136.30/log.php?cmd=start1]]></Tracking> | |
| <Tracking event="midpoint"><![CDATA[http://et.tanx.com/video?stage=1&pid=mm_2000013007_20278042_20406044&pvid=0aeb88b3000019eb5388350900000697&dsp=2000013007&crid=11111736_20426911_0001_0&t=D&s=M&tp=P&k=689fc467055c26dc]]></Tracking> | |
| <Tracking event="midpoint"><![CDATA[http://10.232.136.30/log.php?cmd=mid]]></Tracking> | |
| <Tracking event="midpoint"><![CDATA[http://10.232.136.30/log.php?cmd=mid1]]></Tracking> | |
| <Tracking event="complete"><![CDATA[http://et.tanx.com/video?stage=2&pid=mm_2000013007_20278042_20406044&pvid=0aeb88b3000019eb5388350900000697&dsp=2000013007&crid=11111736_20426911_0001_0&t=D&s=M&tp=P&k=689fc467055c26dc]]></Tracking> | |
| <Tracking event="complete"><![CDATA[http://10.232.136.30/log.php?cmd=end]]></Tracking> | |
| <Tracking event="complete"><![CDATA[http://10.232.136.30/log.php?cmd=end1]]></Tracking> | |
| </TrackingEvents> | |
| <AdParameters/> | |
| <VideoClicks> | |
| <ClickThrough>http://www.taobao.com</ClickThrough> | |
| <ClickTracking><![CDATA[http://rdstat.tanx.com/trd?f=&k=a09e279ad7f7a12a&p=mm_2000013007_20278042_20406044&pvid=0aeb88b3000019eb5388350900000697&s=848x480&d=&t=1401435401]]></ClickTracking> | |
| <ClickTracking><![CDATA[http://10.232.136.30/log.php?cmd=click]]></ClickTracking> | |
| <ClickTracking><![CDATA[http://10.232.136.30/log.php?cmd=click1]]></ClickTracking> | |
| </VideoClicks> | |
| <MediaFiles> | |
| <MediaFile id="0" delivery="progressive" type="video/m3u8" bitrate="1568" width="854" height="480"><![CDATA[http://d.tv.taobao.com/T28en3XG0aXXXXXXXX/1.m3u8]]></MediaFile> | |
| <MediaFile id="1" delivery="progressive" type="video/mp4" bitrate="1568" width="854" height="480"><![CDATA[http://creativecenter-video.oss-cn-hangzhou.aliyuncs.com/video2001151402480588652.mp4]]></MediaFile> | |
| <MediaFile id="2" delivery="progressive" type="video/mp4" bitrate="1138" width="568" height="320"><![CDATA[http://n.videotest.alikunlun.com/TB22HuzXXXXXXXJXXXXXXXXXXXX.mp4]]></MediaFile> | |
| <MediaFile id="3" delivery="progressive" type="video/x-flv" bitrate="1138" width="568" height="320"><![CDATA[http://n.videotest.alikunlun.com/TB2ZaWzXXXXXXbuXXXXXXXXXXXX.flv]]></MediaFile> | |
| <MediaFile id="4" delivery="progressive" type="video/mp4" bitrate="123" width="428" height="240"><![CDATA[http://d.tv.taobao.com/T2g_6XXyFaXXXXXXXX.mp4]]></MediaFile> | |
| <MediaFile id="5" delivery="progressive" type="video/x-flv" bitrate="324" width="320" height="240"><![CDATA[http://d.tv.taobao.com/T25cvZXMdaXXXXXXXX.flv]]></MediaFile> | |
| </MediaFiles> | |
| </Linear> | |
| </Creative> | |
| </Creatives> | |
| <Extensions/> | |
| </InLine> | |
| </Ad> | |
| </VAST> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment