2017-05-06 09:27:52 ubunrabbit 阅读数 552

进入主题

 

Android端

 

通过gameEngine.setRuntimeInterface获取Egret向本地发送的命令消息进行读取写入操作,这里只介绍sharedprefference,数据库存储类似。

 

 

/**
* 写入
* @param context
* @param key
* @param data
*/
public static void saveData(Context context, String key, Object data){

String type = data.getClass().getSimpleName();
SharedPreferences sharedPreferences = context
.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();

if ("Integer".equals(type)){
editor.putInt(key, (Integer)data);
}else if ("Boolean".equals(type)){
editor.putBoolean(key, (Boolean)data);
}else if ("String".equals(type)){
editor.putString(key, (String)data);
}else if ("Float".equals(type)){
editor.putFloat(key, (Float)data);
}else if ("Long".equals(type)){
editor.putLong(key, (Long)data);
}

editor.commit();
}

/**
* 读取
* @param context
* @param key
* @param defValue
* @return
*/
public static Object getData(Context context, String key, Object defValue){

String type = defValue.getClass().getSimpleName();
SharedPreferences sharedPreferences = context.getSharedPreferences
(FILE_NAME, Context.MODE_PRIVATE);

//defValue为为默认值,如果当前获取不到数据就返回它
if ("Integer".equals(type)){
return sharedPreferences.getInt(key, (Integer)defValue);
}else if ("Boolean".equals(type)){
return sharedPreferences.getBoolean(key, (Boolean)defValue);
}else if ("String".equals(type)){
return sharedPreferences.getString(key, (String)defValue);
}else if ("Float".equals(type)){
return sharedPreferences.getFloat(key, (Float)defValue);
}else if ("Long".equals(type)){
return sharedPreferences.getLong(key, (Long)defValue);
}

return null;
}

 

 

 

最后

 

IOS端

通过[EgretRuntimegetInstance] setRuntimeInterface获取Egret向native发送的消息,并做相关处理

这里只介绍NSUserDefaults方式,其他方式类似,轻量级用这个也足够了。

#pragma mark - 写入

+ (void)setItem:(NSString *)key value:(NSString *)value{

    NSUserDefaults *user = [NSUserDefaultsstandardUserDefaults];

    [user setObject:value forKey:key];

}

 

#pragma mark - 读取

+ (NSString *)getItem:(NSString *)key{

    NSUserDefaults *user = [NSUserDefaultsstandardUserDefaults];

    NSString *value = [user objectForKey:key];

    return value;

 

}

 

完成

 

原理,通过egret与本地通讯,实现native调用。

2018-01-15 15:05:18 mr_henry_love 阅读数 310

1, egret.textfield 设置textfieldtype=Input 之后, 这个文本就变成了输入框.

2, TS 创建一个数组,  let array=   <Array<number>>[1,2,3,4],   console.log(array[2]);  这样就好了, 然后可以调用push 或者pop

3, 一个textfield 可以这样设置富文本,   textfield.textFlow=<Array<egret.ITextElement>>[{text:"我",style:{textColor:0xff0000}},{text:"爱",style:{textColor:0xff0000},{text:"你",style:{textColor:0xff0000}];   这样

4, 设置超链接事件, inputname.touchenabled=true; inputname.addEventListener(egret.TextEvent.LINK,function(e:egret.TextEvent){console.log(e.text);},this); 这里输出的e.text 就会输出 这个超链接要链接到的目的地址.

5, 只有继承EventDispatcher 的类才可以发送事件,  

6, 对于一个game 游戏,  最开始可能是没有eui模块的, 要添加也很简单,只需要在egretProperties.json里面添加就好了.  编译的时候就会把eui给拷贝过来. 

7, 网络请求可以使用egret.HttpRequest.  例如下面这个代码

  1. var request = new egret.HttpRequest();
  2. request.responseType = egret.HttpResponseType.TEXT;
  3. request.open("http://httpbin.org/get",egret.HttpMethod.GET);
  4. request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  5. request.send();
  6. request.addEventListener(egret.Event.COMPLETE,this.onGetComplete,this);
  7. request.addEventListener(egret.IOErrorEvent.IO_ERROR,this.onGetIOError,this);
  8. request.addEventListener(egret.ProgressEvent.PROGRESS,this.onGetProgress,this);
对于有参数的请求, GET 的直接拼接在url后面就好了, 例如?key=value&key2=value2. Post的话, 就直接把?key=value&key2=value2 这一段参数放在send后面就好了, 例如 request.send(params);

8, 切记的就是, RES 下面的图片只能直接转换为texture, 不能直接转为bitmap, 需要创建一个bitmap对象, 然后把这个对象的texture 属性设置为那个读出来的图片就好了.

9,  ImageLoader 可以用来加载网络或者本地的图片都可以, 

10, 如果是从网络中请求二进制数据的话, 可以使用下面这个设置就可以了

  1. request.responseType = egret.HttpResponseType.ARRAY_BUFFER;
  2. 11, 对于一个BitMap可以代码设置其为9宫格图片,
    1. var rect:egret.Rectangle = new egret.Rectangle(30,31,40,41);
    2. img2.scale9Grid =rect;
    这样设置就好了,
  3. 12. 使用图集, 首先是安装texturemerger, 然后创建一个项目, 把图片添加进去, 设置好之后, 会导出一张图片和一个json配置, 把两个放在同一级目录下, 然后配置default_res.Json, 加载的时候, RES.getRes(图集名.id) 就会加载图集中id 的这张图片了, 如果不放在同一级目录的话, 就要修改.json这个文件, 关于这张图片的相对路径, 默认是在同一级的, .. 表示上一级目录 例如../assets/a.png, 表示当前目录的父目录下面的assets子目录下面的a.png.

2016-01-06 16:09:42 taotao3686 阅读数 2324
public isWeiXin():boolean
    {
        
var ua:string = navigator.userAgent.toString();
 
        
var str:any=ua.match(/MicroMessenger/i);
        
if(str=="MicroMessenger") {
             
return true;
         } 
else {
               
return false;
        
 }
 
    
}

2018-04-28 01:26:46 dofun333 阅读数 242
  • 你首先得有一个认证的公众号,这样你才能使用分享的接口
  • 在代码里面通过id和secret调用接口,但你得先把运行代码的服务器的ip加到wx白名单
  • 你需要使用js接口,所以你得把分享使用的域名加到wx的js安全域名里
  • 分享时候显示的图片需要特定尺寸,不合规的图片会不予显示,简单的办法是统一调用一个可用的图片
  • 分享的接口功能只在wx内置的浏览器有效
  • 引用官方js接口的时候可能与别的js文件产生冲突,比如“require.js”,从而调用失败,为了避免这种情况,应该在冲突的js文件之前调用wx的js文件
2019-04-09 21:19:00 weixin_30435261 阅读数 151

 

1, 手机浏览器打开的项目的时候,浏览器的虚拟按键/标题栏, 使得即便设置全屏也没有变成全屏(好像JS 中有方法向浏览器请求全屏)

2, 加载资源, 关闭后卸载, 再次进入游戏依然很快。不过登陆游戏的时候,有可能无法进入,因为浏览器有缓存

3, egret的回调函数比较随意。 带参数的回调函数, 调用可不传参数, 不带参数的回调函数, 调用的时候可以传参。

4, try{}  catch(err){}   用于捕捉错误, 但是1/0 不报错, 原因:JS 中有infinity这个类型 

5, window.onbeforeunload 这个函数, 里面的代码倒是都会执行, 但是经常弹不出那个窗, 时有时无.

6,TypeScript控制浏览器全屏

注:document内会报msRequestFullscreen不是documentElement的属性,documentElementg as any即可

public fullScreen() {

    //document.getElementById("fullScreen").style.display = "none";

    //document.getElementById("exitScreen").style.display = "block";//error

    let el = document.documentElement as any;

    let rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullscreen;

    if (typeof rfs != "undefined" && rfs) {

      rfs.call(el);

    }; 
    return; 
  } 
  //退出全屏

  public exitScreen() {

    //document.getElementById("fullScreen").style.display = "block";

    //document.getElementById("exitScreen").style.display = "none";

    let cfs = document as any;

    if (cfs.exitFullscreen) {

      cfs.exitFullscreen(); 
    } 
    else if (cfs.webkitCancelFullScreen) { 
      cfs.webkitCancelFullScreen(); 
    } 
    else { 
      cfs.msExitFullscreen(); 
    } 
  }

或者也可以利用一个boolean的开关控制是否为全屏和恢复到原来大小

转载于:https://www.cnblogs.com/allyh/p/10679836.html

没有更多推荐了,返回首页