首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用swf vpaid?

如何使用swf vpaid?
EN

Stack Overflow用户
提问于 2016-10-21 02:01:52
回答 1查看 346关注 0票数 0

VPAID可以是js或swf。

如果我有js,那么一切都很简单,我只需要这样做:

代码语言:javascript
复制
var script = document.createElement('script');
script.onload = onLoad;
script.src = "https://somedomain.net/vpaid.js";
document.getElementsByTagName('head')[0].appendChild(script);

当加载JS文件时,调用onLoad。

代码语言:javascript
复制
function onLoad() {
    var adUnit = getVPAIDAd();
}

现在我有了一个adUnit,它有一些API:

代码语言:javascript
复制
adUnit.initAd
adUnit.handshakeVersion
...

以及另一种控制ad的方法。

但如果我有swf,我就不知道该怎么做了。

我有URL:

代码语言:javascript
复制
https://somedomain.net/vpaid.swf

我可以使用swfobject创建对象:

代码语言:javascript
复制
swfobject.embedSWF(
    "https://somedomain.net/vpaid.swf",
    "myContent", "640", "480", "9.0.0"
);

但是我不知道怎样才能得到AdUnit。我想要从这个swf中获取AdUnit,并且希望这个AdUnit具有相同的接口:

代码语言:javascript
复制
adUnit.initAd
adUnit.handshakeVersion
...

但我不知道该怎么做:(.

EN

回答 1

Stack Overflow用户

发布于 2016-10-22 21:56:16

你需要实现你自己的AS3/Flash播放器来做到这一点。

播放器将通过flash.external.ExternalInterface接收VPAID资源url,或者您将整个解析后的数据交给flash播放器(我更喜欢)。

AS3示例:

代码语言:javascript
复制
/**
 * Setup listeners
 */
private function setup():void {
    ExternalInterface.addCallback("player_load", load);
    ExternalInterface.addCallback("player_exec", execute);
}

/**
 * Hand over VAST
 */       
private function load(data:*):void {
    try {
        var result:* = _internalPlayer.load(new VAST(data.vast));
        callExternal(data.callback, result);
    } catch(e.*) {
        callExternal(data.callback, e);
    }
}

/**
 * Implement something to control the player from JS via ExternalInterface
 */
private function execute(data:*):* {
    try {
        var result:* = new Command(data.command).execute();
        callExternal(data.callback, result);
    } catch(e.*) {
        callExternal(data.callback, e);
    }
}

private function callExternal(target:String, args:*):void {
    if(ExternalInterface.available)
        ExternalInterface.call(target, args);
    else
        trace('ExternalInterface unavailable');
}

JS示例:

代码语言:javascript
复制
embedded_swf['player_load']({
    'vast': vast, // parsed VAST
    'callback': 'window.player.events.backchannel' // some available method to send success/error messages to
});
[...]
embedded_swf['player_exec']({
    'command': {
        'command': 'play',
        'target': 'ad.id.1' // some identifier flash-player can work with
    },
    'callback': 'window.player.events.backchannel'
});

当然,这只是你如何做的一个例子,只是你要做的事情的一小部分。但我希望这能有所帮助。

祝您今天愉快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40161438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档