2018-04-12 11:47:21 MyLoveSunset7777 阅读数 157
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27840 人正在学习 去看看 秦子恒

通过收集相关资料,加亲身实验,有以下几种调试微信页面的方式:

1、(推荐)手机连wifi,并确保手机可以ping通pc端(不在一个网段也可以,只要路由是通的)

     此种方法需要在手机上按开发者工具上设置连接wifi的代理IP,和端口

     无法调试断点,响应数据无法查看

2、(推荐)适用于没有手机的情况,需要有开发者权限,并在工具上登录微信帐号

      在工具内部右边的浏览器地址栏输入测试的网页url,就像在浏览器打开一样

      可以调试断点,可查看响应数据

3、(不推荐)同样适用没有wifi情况,xblink方式,试过,总会在开始调试后,点击页面inspect时无限转圈,也开启了Inspector调试,没用

2018-02-27 09:37:12 shidouyu 阅读数 971
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27840 人正在学习 去看看 秦子恒

常用快捷键

格式调整

  • Ctrl+S:保存文件
  • Ctrl+[, Ctrl+]:代码行缩进
  • Ctrl+Shift+[, Ctrl+Shift+]:折叠打开代码块
  • Ctrl+C Ctrl+V:复制粘贴,如果没有选中任何文字则复制粘贴一行
  • Shift+Alt+F:代码格式化
  • Alt+Up,Alt+Down:上下移动一行
  • Shift+Alt+Up,Shift+Alt+Down:向上向下复制一行
  • Ctrl+Shift+Enter:在当前行上方插入一行

光标相关

  • Ctrl+End:移动到文件结尾
  • Ctrl+Home:移动到文件开头
  • Ctrl+i:选中当前行
  • Shift+End:选择从光标到行尾
  • Shift+Home:选择从行首到光标处
  • Ctrl+Shift+L:选中所有匹配
  • Ctrl+D:选中匹配
  • Ctrl+U:光标回退

界面相关

  • Ctrl + \:隐藏侧边栏
2019-11-26 13:18:04 Fe777s 阅读数 14
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27840 人正在学习 去看看 秦子恒

前言解决方案在最后一句话,可以直接跳过前面的废话)在做一个小功能,智能识别图片上的数字文字,本来真机调试一切正常。后面在调试的过程中,真机连上一段时间没有管它,这段时间过程中,微信开发者工具会自动断开与真机的连接的。
当再次打算重新扫面真机调试二维码时,就出现了:
已结束,请重新开始的状况
当时没有及时截图,该图是网上资源
(当时没有及时截图,该图是网上资源)

解决方式

一:查找网友方案

网上找到的方案:
1、重新安装微信开发者工具;
2、关闭微信开发者工具,重新打开项目;
3、重新登陆项目
4、万能的重启电脑
5、等一段时间再打开项目
还有一个方案是将微信开发者工具会推倒一个给定的版本,个人考虑不是很好,首先微信开发者工具更新很频繁,其次会推倒固定的版本,这个本来就不是一个很好的方案

二:核实方案

实验了方案2和3,再次点击真机调试按钮的时候发现,提示了:错误 请先结束其他真机调试

在这里插入图片描述
有点搞人啊,想了想算了,关机重启好麻烦,而且这个问题也没有去网上查找,等一段时间再打开项目,额,一着急想解决某个问题的时候,等待真的是像初恋时缠缠绵绵的发消息却等不到开学时刻的感觉。

三:解决方式

这个小程序没有用git管理,那就换一下路径,当成一个新的项目重新导入到微信开发者工具中,解决之。

2018-11-02 16:04:25 qq_26902237 阅读数 2446
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27840 人正在学习 去看看 秦子恒

目录

小游戏介绍

 小游戏cocos creator场景图结构

代码文件

小游戏完整工程


小游戏介绍

一个左右跳一跳小游戏,点屏幕左边向左跳,点右边向右跳,落水为失败。

PC chrome浏览器下游戏截图:

小驴过河游戏截图
chrome浏览器运行截图

微信开发者工具截图:

微信开发者工具下运行截图
微信开发者工具下运行截图

 

 小游戏cocos creator场景图结构

cocos creator场景图
cocos creator场景图

 场景结构同上一篇中的挤柠檬汁小游戏结构大体相同  挤柠檬汁小游戏练习

DataManager:记录游戏中的配置数据,游戏逻辑数据(分数 )

SoundManager:管理游戏中的音效

ItemsManager:处理游戏过程中随机出现的道具(金币,玉米等)

Net:处理Http请求

UIManager:管理游戏中的所有UI


代码文件

cocos creator资源
cocos creator资源

主要文件代码

玩家控制(驴) Player.js

//驴
cc.Class({
    extends: cc.Component,

    properties: {
        // foo: {
        //     // ATTRIBUTES:
        //     default: null,        // The default value will be used only when the component attaching
        //                           // to a node for the first time
        //     type: cc.SpriteFrame, // optional, default is typeof default
        //     serializable: true,   // optional, default is true
        // },
        // bar: {
        //     get () {
        //         return this._bar;
        //     },
        //     set (value) {
        //         this._bar = value;
        //     }
        // },
        _UIGameNode: cc.Node,
    },

    // LIFE-CYCLE CALLBACKS:

    // onLoad () {},

    start () 
    {
        this._UIGameNode = cc.find('Canvas/UIManager/UIGame');
    },

    //跳跃,相对位置
    jump(duration, destPos)
    {

        var rotAct = cc.jumpBy(duration, destPos, 80, 1);
        var callFunc = cc.callFunc(this.onJumpEnd, this);
        var seq = cc.sequence(rotAct, callFunc);
        if(destPos.x > 0)
        {
            this.node.setScaleX(1);      
        }
        else
        {
            this.node.setScaleX(-1);   
        }

        this.node.runAction(seq);
    },

    //跳跃到目标点, 绝对位置
    jumpTo(duration, destPos)
    {
        var rotAct = cc.jumpTo(duration, destPos, 80, 1);
        var callFunc = cc.callFunc(this.onJumpEnd, this);
        var seq = cc.sequence(rotAct, callFunc);
        if(destPos.x > 0)
        {
            this.node.setScaleX(1);      
        }
        else
        {
            this.node.setScaleX(-1);   
        }

        this.node.runAction(seq);   
    },

    //跳跃结束
    onJumpEnd()
    {
        this._UIGameNode.getComponent('UIGame').onPlayerJumpEnd();   
    },

    // update (dt) {},
});

ItemManager.js


//游戏中物品池,管理复用的物品

//物品类型
var ItemType = 
{
    //没有东西
    IT_None: -1,
    //草
    IT_Grass: 0,
    //玉米
    IT_Corn: 1,
    //萝卜
    IT_Radish: 2,
    //金币
    IT_Coin:3,
};

var ItemManager = cc.Class({
    extends: cc.Component,

    properties: {
        // foo: {
        //     // ATTRIBUTES:
        //     default: null,        // The default value will be used only when the component attaching
        //                           // to a node for the first time
        //     type: cc.SpriteFrame, // optional, default is typeof default
        //     serializable: true,   // optional, default is true
        // },
        // bar: {
        //     get () {
        //         return this._bar;
        //     },
        //     set (value) {
        //         this._bar = value;
        //     }
        // },

        //物品Prefab列表
        ItemPrefabList:
        {
            default: [],  
            type: [cc.Prefab],
        },

        //概率列表
        ItemRateList:
        {
            default:[],
            type: [cc.Integer],                    
        },

        //随机的基数
        _RandBaseNum : 100,
        _RandRateList: [],
        //物品池
        _ItemPoolList: [],

    },

    // LIFE-CYCLE CALLBACKS:

    onLoad () 
    {
        this._RandBaseNum = 0;

        //概率统计:
        for(var i = 0; i < this.ItemRateList.length; ++i)
        {
            this._RandBaseNum += this.ItemRateList[i];
            if(i == 0)
            {
                this._RandRateList[i] = this.ItemRateList[i];
            }
            else
            {
                this._RandRateList[i] =  this._RandRateList[i - 1] + this.ItemRateList[i];
            }
        }

        //物品池,各个物品先预创建3个
        for(let i = 0; i < 4; ++i)
        {
            this._ItemPoolList[i] = new cc.NodePool();
            
            for(var j = 0; j < 3; ++j)
            {
                var curItem = cc.instantiate(this.ItemPrefabList[i]);
                this._ItemPoolList[i].put(curItem); 
                //设置为物品  
                curItem.group = "item";
                curItem.setTag(i);
            }
        }

    },

    start ()
    {
        
    },

    //获取当前Block挂载的物品
    getRandomItemType()
    {
        //[0, 1)
        var randNum = parseInt(cc.random0To1() * this._RandBaseNum);
        for(var i = 0; i < this._RandRateList.length; ++i)
        {
            if(randNum < this._RandRateList[i] )
            {
                
                break;
            }
        }
        //cc.log("getRandomItemType ",  randNum, );
        return i - 1;
    },

    //获取某类型的Item
    getItemByType( itemType )
    {
        if(itemType == ItemType.IT_None)
        {
            return null;
        }   

        if(itemType > 3 || itemType < 0)
        {
            return null;
        }

        var curItem = this._ItemPoolList[itemType].get();
        if(curItem == null)
        {
            curItem =   cc.instantiate(this.ItemPrefabList[itemType]);
            this._ItemPoolList[itemType].put(curItem);
            //设置为物品  
            curItem.group = "item";
            curItem.setTag(itemType);

            curItem = this._ItemPoolList[itemType].get();
            cc.log("new item ", itemType);
        }
        curItem.scale = 0.7;
        return curItem;
    },

    //将Item重新返回到Pool
    putItemToPool(curItem)
    {
        if(curItem.group != 'item')
        {
            //cc.log("putItemToPool invalid  group");
            return;
        }

        curItem.parent = null;

        var itemType = curItem.getTag();

        if(itemType > 3 || itemType < 0)
        {
            //cc.log("putItemToPool invalid  itemType");
            return;
        }

        this._ItemPoolList[itemType].put(curItem);

    },

    // update (dt) {},
});


module.exports = 
{
    ItemType: ItemType,
    ItemManager: ItemManager,
}

UIGame.js部分代码

    //游戏状态的处理
    setGameState(state)
    {
        //处理暂停逻辑
        if(this._CurGameState == GameState.GS_Pause && state !=  this._CurGameState)
        {
            cc.director.resume();    
        }

        //新状态的处理
        this._CurGameState = state;   
        //准备状态
        if(this._CurGameState == GameState.GS_Ready)
        {
            this.StartBtn.node.active = true;
            this.PauseBtn.node.active = false;
        }
        //暂停
        else if(this._CurGameState == GameState.GS_Pause)
        {
            cc.director.pause();

            //按钮显示与隐藏
            this.StartBtn.node.active = true;
            this.PauseBtn.node.active = false;
        }
        //等待游戏中的操作
        else if(this._CurGameState == GameState.GS_WaitOP)
        {
            this.StartBtn.node.active = false;
            this.PauseBtn.node.active = true;

            //对当前Block进行下移操作
            if(this._CurBlockIndex < 0 || this._CurBlockIndex >= this._BlockListUse.length)
            {
                cc.log("GS_WaitOP invalid _CurBlockIndex ", this._CurBlockIndex);
                return;
            }

            var curBlock = this._BlockListUse[this._CurBlockIndex];
            if(curBlock == null)
            {
                cc.log("GS_WaitOP invalid curBlock null", this._CurBlockIndex);
                return;    
            }
            //block下移
            var downAct = curBlock.getActionByTag(0);
            if(downAct == null)
            {
                var downActScale = cc.scaleTo(1.5, 1, 0);
                var callFunc = cc.callFunc(this.onBlockDownFinish, this, curBlock); 
                downAct = cc.sequence(downActScale, callFunc);
                curBlock.runAction(downAct);
            }
        }
        //游戏结束
        else if(this._CurGameState == GameState.GS_Over)
        {
            //按钮显示与隐藏
            this.StartBtn.node.active = false;
            this.PauseBtn.node.active = false;

            var UIManager = this.node.parent.getComponent('UIManager');
            UIManager.openUI(UIType.UIType_GameOver);

            //向子域发送,上传数据
            var DataManager = this.DataManager.getComponent('DataManager');
            if(window.wx != undefined)
            {
                window.wx.postMessage(
                    {
                        msgType: 1, 
                        bestScore: DataManager.getCurScore(),
                    }
                );
            }

            //播放背景音乐
            if(this.SoundManager)
            {
                var soundMgr = this.SoundManager.getComponent('SoundManager');
                soundMgr.stopSound(SoundType.SoundType_Bg);
                soundMgr.playSound(SoundType.SoundType_Fall);

            }

        }

    },

动态场景生成:


    //------------------------Block操作 begin--------------------------
    //获取Block
    getBlock()
    {
        if(this._BlockList.length > 0)
        {
            var block = this._BlockList.pop();

            this._BlockListUse.push(block);
           return block;   
        }
        else
        {
            var block = cc.instantiate(this.BlockPrefab);
            this.pushBlock(block);

            return this.getBlock();   
        }
    },

    //添加Block
    pushBlock(block)
    {
       // this._BlockPool.put(block);
        this._BlockList.push(block);
    },

    //移除Block(移除一个最下面的,屏幕外的Block) 还原到池里
    delelteUseBlock()
    {
       var firstBlock = this._BlockListUse.shift(); 
       firstBlock.parent = null;
       firstBlock.scaleY = 1;
        
       //将Block下物品还原到物品池
       this.restoreItemToPool(firstBlock);

       this._BlockList.push(firstBlock);
       this._CurBlockIndex -= 1;         

    },

 

小游戏完整工程

 小游戏完整的cocos creator工程:奔跑吧小驴,此工程仅供学习参考用途。发现代码中的Bug或者任何问题,请留言。

没有积分的可以在下方留言索取资源,虽然不保证即时回复

试玩:奔跑吧小驴在线试玩 (由于起初就是做的微信小游戏,所以在浏览器下会有些瑕疵,只做了简单的适配,未测试过)

应广大网友要求,现将代码放在github上:github creator工程主要是我没有CSDN的积分,想赚点积分下载其它资源用。可怜可怜我吧

2019-08-28 14:15:00 bangyang7328 阅读数 20
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27840 人正在学习 去看看 秦子恒

 打开微信开发者工具 创建第一个小程序

  • 步骤:

    • 打开微信开发者工具

    • 使用微信扫码登录

    • 点击小程序-创建小程序

      • 项目名

      • 项目路径

      • appid

      • 不使用云服务器

      • 语言: javascript

 截图如下:

 

微信开发者开发工具的组成

  • 菜单栏

  • 工具栏

    • 预览

      • 描述二维码

      • 自动预览

    • 切后台

  • 模拟器

  • 编译器

  • 调试器

 目录结构:

    

 

1.项目结构

  • 对比:

    • web页面:

      • 技术栈:

        • html

          • 从语义化的角度来描述页面结构

        • css

          • 从审美的角度来美化页面

        • js

          • 从交互的角度来提升用户体验

    • 小程序页面

      • 技术栈:

        • wxml

          • 描述微信页面的结构

        • wxss

          • 描述微信页面的样式

        • js

          • 书写微信的逻辑代码

        • json

          • 配置页面的相关信息

  • 组成

    • pages:管理当前小程序中所有的页面

      • index

        • index.wml

        • index.js

          • 注意点:

            • 所有的代码都是写在

              Page({
               
              })
        • index.wxss

        • index.json

          • 注意点:

            • 如果没有内容,必须添加一个空对象

    • app.json:注册小程序中的页面

  • 小技巧
    • 快速创建一个页面

      • 在 app.json 中的 pages 下添加一个路径,直接保存,可以自动生成对应的页面

    • 设置项目的默认首页

      • 在 app.json 中的 pages 将路径移到第一个元素中










转载于:https://www.cnblogs.com/KoBe-bk/p/11423765.html

微信小程序实现截屏

阅读数 28151

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