dragonbones-runtime
Version:
the tools to build dragonbones file for diffrent framework
136 lines (118 loc) • 4.51 kB
text/typescript
//////////////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2014-present, Egret Technology.
// All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of the Egret nor the
// names of its contributors may be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA,
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//////////////////////////////////////////////////////////////////////////////////////
namespace egret.web {
/**
* @private
*/
export class WebExternalInterface implements ExternalInterface {
/**
* @private
* @param functionName
* @param value
*/
static call(functionName:string, value:string):void {
}
/**
* @private
* @param functionName
* @param listener
*/
static addCallback(functionName:string, listener:(value)=>void):void {
}
}
let ua:string = navigator.userAgent.toLowerCase();
if (ua.indexOf("egretnative") < 0) {
ExternalInterface = WebExternalInterface;
}
}
namespace egret.web {
let callBackDic = {};
/**
* @private
*/
export class NativeExternalInterface implements ExternalInterface {
static call(functionName:string, value:string):void {
let data:any = {};
data.functionName = functionName;
data.value = value;
egret_native.sendInfoToPlugin(JSON.stringify(data));
}
static addCallback(functionName:string, listener:(value)=>void):void {
callBackDic[functionName] = listener;
}
}
/**
* @private
* @param info
*/
function onReceivedPluginInfo(info:string):void {
let data = JSON.parse(info);
let functionName = data.functionName;
let listener = callBackDic[functionName];
if (listener) {
let value = data.value;
listener.call(null, value);
}
else {
egret.$warn(1050, functionName);
}
}
let ua:string = navigator.userAgent.toLowerCase();
if (ua.indexOf("egretnative") >= 0) {
ExternalInterface = NativeExternalInterface;
egret_native.receivedPluginInfo = onReceivedPluginInfo;
}
}
namespace egret.web {
let callBackDic = {};
/**
* @private
*/
export class WebViewExternalInterface implements ExternalInterface {
static call(functionName:string, value:string):void {
__global.ExternalInterface.call(functionName, value);
}
static addCallback(functionName:string, listener:(value)=>void):void {
callBackDic[functionName] = listener;
}
static invokeCallback(functionName:string, value:string):void {
let listener = callBackDic[functionName];
if (listener) {
listener.call(null, value);
}
else {
egret.$warn(1050, functionName);
}
}
}
let ua:string = navigator.userAgent.toLowerCase();
if (ua.indexOf("egretwebview") >= 0) {
ExternalInterface = WebViewExternalInterface;
}
}