精华内容
参与话题
问答
  • cocos creator 游戏接入微信登录

    万次阅读 2018-03-01 17:31:44
    二、在“开发——接口权限...根据注意事项,把文件下载至填写域名的web服务器的目录,我是放到...Tomcat 8.5\webapps\ROOT目录下,如果不清楚可以拷贝多份放到各个你认为适合的目录。 并且修改tomcat的端口,把8...

    一、登录微信公众平台,在“开发——基本配置”配置appid,开发者密码,IP白名单

    二、在“开发——接口权限——网页服务——网页授权”配置网页授权域名

    如上图,点击设置后如下图

    根据注意事项,把文件下载至填写域名的web服务器的目录,我是放到...Tomcat 8.5\webapps\ROOT目录下,如果不清楚可以拷贝多份放到各个你认为适合的目录。

    并且修改tomcat的端口,把8080改为80,如果修改端口发现80端口被占用,请参考文章http://blog.csdn.net/qq_33440781/article/details/54310901操作。

    同时设置“业务域名”和“JS接口安全域名”如下图

    三、开发实现,主要参考微信官方文档

     

    1. 首先配置回调域名

     2. 构造请求url如下:

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect

    页面URL中的

    scope=snsapi_userinfo 表示应用授权作用域为请求用户信息
    ★ 如果使用别人的AppID和AppSecret,那么获得的OpenID是那个有高级接口权限的服务号的,这里可以通过消息回复,获取本公众账号下的OpenID,带入回调中,与另一个OpenID进行关联也可以使用开放平台的UnionID功能来得到用户在自己账号下的OpenID 
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://mascot.duapp.com/oauth2.php?userid=oc7tbuPA9BgUCLADib5nB3k2KWWg&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect

    将该链接回复给关注用户,用户点击后,弹出应用授权界面

    3. 回调页面得到链接如下,回调url中将包含参数code

    http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1
    或者 http://mascot.duapp.com/oauth2.php?userid=oc7tbuPA9BgUCLADib5nB3k2KWWg&code=00b788e3b42043c8459a57a8d8ab5d9f&state=1

    4. 再使用code换取oauth2的授权access_token

    url如下:

    https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx8888888888888888&secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&code=00b788e3b42043c8459a57a8d8ab5d9f&grant_type=authorization_code

    获得授权Access Token:

    复制代码

    {
        "access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN--2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw",
        "expires_in": 7200,
        "refresh_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A",
        "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
        "scope": "snsapi_userinfo,"
    }

    复制代码

    5. 再使用授权Access Token获取用户信息

    url如下:

    https://api.weixin.qq.com/sns/userinfo?access_token=OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN--2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw&openid=oLVPpjqs9BhvzwPj5A-vTYAX3GLc

    返回如下

    复制代码

    {
        "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
        "nickname": "刺猬宝宝",
        "sex": 1,
        "language": "zh_CN",
        "city": "深圳",
        "province": "广东",
        "country": "中国",
        "headimgurl": "http://wx.qlogo.cn/mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg18/0",
        "privilege": []
    }

    复制代码

    获取用户信息完成。

    最终得到用户信息如下所示

    此方法详细过程可参考 微信公众平台开发(71)OAuth2.0网页授权

    这种方法适合,

    1. 在朋友圈中获得用户的信息.

    2. 在网页中获得用户信息。

    3. 在自定义菜单中获得用户信息。

     

    展开全文
  • Cocos Creator错误总结

    千次阅读 2019-02-25 18:36:22
    [1] 生成延迟销毁Error,关于cc.instantiate拷贝节点,之后延迟销毁的 [2] : Require(‘文件名’) 错误 // 正确写法,最开始的时候是直接写的module.export = cc.Class(...),这种我实验的时候是会出错...

    学习(心态爆炸)历程:

    关于2.0 shader的cgNode出错,可以看上篇blog,最前面的解决方案,是官方引擎组写的一个shader

    [1] : Require(‘文件名’) 错误

    // 正确写法,最开始的时候是直接写的module.export = cc.Class(...),这种我实验的时候是会出错的
    // re_public.js
    var re_public = cc.Class(
    {
    	pring:function()
    	{
    		cc.log('print');
    	}
    });
    module.export = re_public;
    // 调用时
    var re_public = require('re_public');
    

    [2] : 注意cc.v2,看一段代码

    // 下面这段代码一直在报 ' 错误,x为空 ',起初我一直以为是x这个变量的问题
    // 因为log打印的行号是最后一行,也就是那个 )} ,最后一行行的删,发现cc.v2没有x这个变量 ......,
    // 我当时这个心情啊,以此铭记 如果要初始化,最好使用cc.vec2 这个有相应变量的,f12
    cc.Class({
        extends:cc.Component,
        properties:{
            speed :0,
            offset : cc.v2
        },
        onLoad:function(){
            this.offset= cc.v2(this.node.width,this.node.height);
        },
        update : function(){
    		var x = this.nodeSize.x;
    		if(x > 50)
    		{
    			cc.log('print');
    		}
    	}
    	)}
    

    [3] : cc.loader.load(url,cc.SpriteFrame,function()) 出现错误

    Uncaught ReferenceError: frame is not defined(我重现了一下,不过记得报的好像不是这个错)
    
    start:function()
        {
            var self = this;
            cc.loader.load('https://profile.csdnimg.cn/5/D/7/1_magic_code_',function(err,texture)
            {
                if(err)
                {
                    console.log('Image Load Failed! Url->','https://profile.csdnimg.cn/5/D/7/1_magic_code_',' Error Info->',err);
                }
                // 如果不写new SpriteFrame()这一句,而是直接xxx.spriteFrame = texture;就会出现上面那个错误,
                // 估计,应该是因为下载的数据为一个流格式,也就是Object,所以需要转一下数据
                // 下面是new SpriteFrame 跳转到的函数原型
                //constructor(filename?: string|Texture2D, rect?: Rect, rotated?: boolean, offset?: Vec2, originalSize?: Size);
                //let frame = new cc.SpriteFrame(texture);
                self.node.getComponent(cc.Sprite).spriteFrame = frame;
            });
        }
    

    [4] : 继承

        遇到一个问题,我写了一个基类,然后import导入,继承之后在子类里面写update之后,
    爆出了一个非常奇怪的BUG,Creator的报错机制大家都了解,我这里报错的位置是一个大括号。。。
    ???非常奇怪,于是一行行的删除,之后定位到是update(dt)这个位置,反复检查之后,发现根本没有任何问题,
    因为父类里面的代码是经过单独测试的,而子类里面除了有方法,其他的实现都被删除了,然而还是会报错
    当时就在想,JS里面到底有没有重写或是base.XXX()这种写法,
        测试,删除了父类的Update函数,编译运行,无异常。。。???,骚啊,还有这种操作,这种报错
    不一行行删除谁能想的到啊。。。但是此时又出现了一个问题,我父类需要使用update实现一些方法,子类同样要有扩展方
    法,但是update又不能同时出现在两个类里面,这种实现如果是放在C#里面,我们的第一想法肯定是delegate,但是JS里面
    根本没有这种东西(没搜到)呀,绞尽脑汁,突然想起来官网文档里面好像有一些东西可以帮助我去实现这种写法
    
    /// 父类实现,假设父类js文件名为PersonBase.js
    cc.Class({
    	extends:cc.Component,
    	properties:
    	{
    		m_OnUpdate:[],		//  如果子类需要用到update则添加str到本数组中
    		m_IsStartMonitor:0
    	},
    	Initial:function(){
    		this.m_OnUpdate = [];
    		this.m_OnUpdate.push('ParentUpdate');
    		this.node.on('ParentUpdate',function(dt)
    		{
    			console.log('父类Update , DeltaTimer -> ' + dt);
    		});
    	},
    	update:function()
    	{
    		if(this.m_IsStartMonitor  != 0)
    		{
    			for(var i = 0;i < his.m_OnUpdate.length;i++)
    			{
    				this.node.emit(this.m_OnUpdate[i],dt);
    			}
    		}
    	}
    });
    ---------------------------------------------------------------------------------------------
    /// 子类实现
    import PersonBase from 'PersonBase'
    cc.Class({
    	extends:PersonBase,
    	//properties:{}
    	start:function()
    	{
    		this.Initial();
    		this.m_OnUpdate.push('ChildUpdate');
    		this.node.on('ChildUpdate',function(dt){
    			cc.log('子类Update , DeltaTimer -> ' + dt);
    		});
    		this.m_IsStartMonitor = 1; // 开启监听
    	},
    });
    
    

    [5] 数组 字典的删除

    	在C#,一般我们希望删除某个元素的时候,都会直接调用Remove(i or key)这个方法,但是js里面的所有变量都是
    Object,姑且不提有没有这个方法,就算有,我们在删除的时候也有很大可能因为object类型出现一些错误,
    那么能不能直接 == null,我实验了一下,这个方法是可以使用的,但是如果你  for(key in dict) 时,对应元素索引
    的位置会是一个undenfined,如果我们采用这种的话,那么假设,我们需要不断的去更新一个数组里面的一些数据,
    那么伴随着游戏的运行,这个里面占用的内存也会越来越大,这显然不是我们所希望的,
    	话说,我们上面用到了push,那么应该也有一个对应的pop啊,对,没错,但是pop是弹出最后一个元素,而我们希望的是
    我们去判断删除哪一个元素,而不是全看运气,联想一下,push pop都有了,那么对应的一些其他元素也有可能出现,比如
    delete。。。
    	嗯~~,删除也有,但是在删除数组时是直接把数组的对应索引归空(蛮正常),只有在删除字典的key值时才会把
    对应元素删除
    
    /// 字典删除,数组不归空直接更新的话,估计是要自己写,但是涉及到大量的数据更新,手动更新肯定是不科学的
    /// 所以这里用的是字典
    cc.Class({
        extends:cc.Component,
        properties:{
            m_EnentDict:[], 
        },
        
        start: function () {
            this.SetPosi(cc.v2(-200, 0));
            this.m_EnentDict= {
                1:'1',
                2:'2',
                3:'3',
                4:'6',
                5:'12'
            };
    
            this.m_EnentDict[6] = '63';
            for (var i in this.m_EnentDict) {
                cc.log(this.m_EnentDict[i]);
            }
            delete this.m_EnentDict[3];
            for (var i in this.m_EnentDict) {
                cc.log(this.m_EnentDict[i]);
            }
            /// 最终迭代次数和我们预想的一致,而不是顺带把null,underfined一起输出
        },
    });
    
    

    。。。日后遇到在加吧

    展开全文
  • cocoscreator配置ant

    2017-06-23 09:35:04
    命令行下which ant 拷贝路径,注意定位到bin目录下,不然会报错,像这样 export ANT_ROOT=/Users/tim/Desktop/devTools/apache-ant-1.9.4/bin

    命令行下which ant

    拷贝路径,注意定位到bin目录下,不然会报错,像这样

    export ANT_ROOT=/Users/tim/Desktop/devTools/apache-ant-1.9.4/bin

    展开全文
  • cocosCreator-小功能

    2020-07-04 21:24:37
    cocosCreator-小功能拷贝功能电量获取 拷贝功能 ios: +(void)copyString:(NSString*)str { UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = str; } android: import ...

    cocosCreator-小功能

    拷贝功能

    ios:

    	+(void)copyString:(NSString*)str
    	{
    	    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    	    pasteboard.string = str;
    	}
    

    android:

    	 import android.os.Looper;
    	 // 拷贝
    	    public static boolean isLooper = false;
    	    //在 onCreate 中赋值  ccActivity = this;
    	    public static AppActivity ccActivity;
    	    // 拷贝字符串
    	    public static int copyString(String content) {
    	        if (!isLooper) {
    	            Looper.prepare();
    	            isLooper = !isLooper;
    	        }
    	        ClipboardManager cbm = (ClipboardManager) ccActivity.getSystemService(Service.CLIPBOARD_SERVICE);
    	        ClipData cd = ClipData.newPlainText("pipi", content);
    	        cbm.setPrimaryClip(cd);
    	        return 0;
    	    }
    

    js:

    	  //拷贝字符串
        copyString(str) {
            if (cc.sys.os === cc.sys.OS_ANDROID && cc.sys.isBrowser !== true) {
                jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "copyString", "(Ljava/lang/String;)I", str);
            } else if (cc.sys.os === cc.sys.OS_IOS || cc.sys.os === cc.sys.OS_OSX && cc.sys.isBrowser !== true) {
                jsb.reflection.callStaticMethod("AppController", "copyString:", str);
            }
        },
    

    电量获取

    ios:

    	+ (float) getBatteryLevel {
    	    //打开电池的监听
    	    [UIDevice currentDevice].batteryMonitoringEnabled = YES;
    	    //获取剩余电量 范围在0.000000 至 1.000000之间
    	    CGFloat batterylevel = [UIDevice currentDevice].batteryLevel;
    	    CGFloat floatlevel = batterylevel * 100;
    	    return floatlevel;
    	}
    

    android:

    	
    

    js:

        getBatteryLevel(str) {
            if (cc.sys.os === cc.sys.OS_ANDROID && cc.sys.isBrowser !== true) {
             
            } else if (cc.sys.os === cc.sys.OS_IOS || cc.sys.os === cc.sys.OS_OSX && cc.sys.isBrowser !== true) {
           		let bl = jsb.reflection.callStaticMethod("AppController", "getBatteryLevel");
           		bl = bl.toFixed(2) * 100;
           		return bl;
            }else {
    			return "0";	
    		}
        },
    
    展开全文
  • 挖孔屏这种设备,用cocoscreator获取到的visibleSize不是铺满了整个屏幕,会在孔的下方一条直线,导致了背景图不能铺满整个屏幕,也就是顶部会有黑边。 适配方法:将一下代码拷贝到AppActivity下的onCreate中,注意...
  • 我把creator原工程中的资源考到另一个考到工程下面,手残的把复制选为剪切,结果原工程的资源全没了,然后我又全部重新拷贝了回来,最后打开原工程creator项目,发现编辑器的控制台提示我出错,uuid collision:xxx ...
  • cocos creator实现的日期选择控件

    千次阅读 2018-12-12 22:11:23
    将 UIDatePicker 文件夹拷贝到项目中 在脚本中创建一个 Prefab,值设为 UIDatePicker 需要显示时,创建节点,设置日期和回调 cc.Class({ extends: cc.Component, properties: { label: { ...
  • cocos 官方给出的热更新脚本很简单,我们在它基础之上,用nodejs编写一个全面的热更新脚本,自动创建文件夹,拷贝,备份等。 目录结构 脚本使用: node hotupdate.js -v 3.0.0 (-v 指定生成的更新版本) 先写到...
  • 在独立游戏开发一段时间之后,会有这样的需求,想要做一个app大厅将所有独立游戏整合到一个大厅项目中,并且大厅和子游戏... 既然资源都可以如此获取,自然子项目发布文件也可以拷贝到此目录下,作为大厅整包发布;...
  • 我们项目中有这样一个问题,index.html main.js我们需要自己定义,并且需要添加一些其它的东西,比如图片、css等,刚开始我们的做法是build之后,手动拷贝过去,但是很麻烦,现在我们找到了一种简便的方法 ...
  • 注:拷贝自官方文档 修改场景资源自动释放策略 如果项目中的场景很多,随着新场景的切换,内存占用就会不断上升。除了使用 cc.loader.release 等 API 来精确释放不使用的资源,我们还可以使用场景的自动释放功能。要...
  • CocosCreator系列教程——利用Java原生实现文本赋值粘贴功能 节后第一天先来点简单的熟悉一下代码(●ˇ∀ˇ●),这个功能超级简单,直接看代码 //点击将拷贝的字符串传到Java层 onCopyClick() { if (cc.sys.os == ...
  • 最近在捣鼓Cocos Creator,发现一直在安装过程中提示“disk1.cab没有正确的数字签名”。经过排查,我发现我的问题主要是由于我的设备是内网机导致的。(内网机真是神坑啊,很多奇奇怪怪的问题都会出现) 解决方法是...
  • 1.下载node.js选择自己电脑匹配的版本。 检测安装成功没 然后安装express 检测安装 然后安装 ws(WebStorm),新建项目 ...拷贝然后把cocos 发布的web包放在pubilc下面 就可以 本地预览了 刚才我们只是本地服务...
  • cocos2d-x杂项

    2019-07-20 14:08:14
    目录:cocos2d-x/tools/project-creator 命令:./create_project.py -project path_test -package com.yiwanzu.test -language cpp 拷贝cocos2d-x/tools/lua_project_generator/template/android/src的org文件夹...
  • 021 - creator笔记

    2020-05-26 15:21:30
    021 - creator笔记 ...build-templates:你要发布哪些文件到发布包中,你就把你的文件放到这个文件夹下,打包完成后,cocos自动build-templates拷贝过去, 替换 creator.d.ts:开发者—》vscode工作流程—&g
  • cocos2d-x怎么新建项目

    2015-04-06 16:13:28
    cocos2d-x在2.x以后的版本是使用Python命令创建的,具体步奏如下 1.下载Python,安装 ...3.进入这个目录》E:\cocos2d-x\cocos2d-x-2.2.6\tools\project-creator (我的cocos2D-x安装在E盘) 4使用命令行执行create
  • 有些在场景工程中没有指定而通过代码中动态加载的资源,cocos creator不会导出到发布目录下,需要手动拷贝到对应的目录或者在工程的场景树中加一个隐藏的控件指定该资源。 2:微信排行榜子域问题 由于微信排行榜的...
  • 找到CocosCreator的安装目录 [引擎安装根目录\resources\static\template] 定制自己的脚本模板 打开new-script.js文件 编辑你的模板内容 注意 引擎升级后模板定制会失效 这里提供个方案:把定制的模板脚本文件...
  • 1 使用cocos2d-x-2.2\tools\project-creator文件夹中的create_project.py脚本,生成一个demo。 2 拷贝Classes和Resources文件夹到刚生成的demo对应文件夹下 3 用vs打开脚本生成的cocos2dx demo,此时那个项目下...
  • fixed _doDispatchEvent error

    2020-12-01 00:45:05
    <div><p>之前处理过这个问题: https://github.com/cocos-creator/engine/pull/6816, 但是后面没复现就没处理了。 现在重新提交: 使用 pageView 嵌套 scrollview 能够...cocos-creator/engine</p></div>

空空如也

1 2
收藏数 38
精华内容 15
关键字:

cocos creator拷贝