- 博客(250)
- 资源 (7)
- 收藏
- 关注
转载 Lua中__index和__newindex实践
前言这篇博文将通过几个简单的实例演示,巩固对__index和__newindex的理解,同时加深对Lua中元表和元方法的理解,如果对Lua的元表和元方法还不是很熟悉的话,请参考这篇文章:《Lua中的元表与元方法》。具有默认值的table我们都知道,table中的任何字段的默认值都是nil,但是通过元表,我们可以很容易的修改这一规定,代码如下:function setDe
2016-05-14 10:42:34 404
原创 lua中的String
You can find details about the string library in section 5.4 of the Reference Manual [1]. For practical examples of usage of the string library, have a look at StringRecipes.Note: In Lua string
2016-05-14 09:59:17 1207
原创 lua中的全局函数
--内部全局函数--内部全局函数会以最后一次调用的外部参数为其参数function A(_test_par) function B() print(_test_par) end local public = {} function public.test() B() end return publicenda1 = A(1)
2016-05-12 12:06:52 2465
转载 Lua代码编写注意点
1. 发现Lua的东西都是“浅拷贝”, 没有传址, 引用,深拷贝等, 这对一些精良的设计造成难度。2. Lua变量无类型配对,但调用Lua的系统却有类型配对,这两者的矛盾导致交互设计的成本。3. 为了代码的高度复用需要把相关的类型抽象出来,但Lua的代码检测能力较宽松,即使参数配错了(不同的类系)依然可以进行, 这对实现者造成了数据流
2016-05-12 12:04:52 1405
原创 Lua中的ipair 和 pair的区别
原来,pairs会遍历table的所有键值对。table是键值对的数据结构。而ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。顺便说下,记忆也很简单,带i的就是根据integer key值从1开始遍历的。请看个例子:tb = {"oh", [3] = "god", "my", [5] = "hello", [6] = "w
2016-05-11 17:44:30 3544
原创 cocos2d-x如何实现跨平台
【cocos2d-x入门之四】cocos2d-x怎么实现跨平台原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12610287cocos2d-x到底是这样实现跨平台的呢?这里以Win32和Android为例。1.跨平台项目目录结构先看一下一个项目创建后的目
2016-05-11 11:27:04 1275
转载 lua中table.sort的回调函数
- CONTENT -- --- lua中table.sort的回调函数的在确定大小关系(>/-- --- -- 实例一 -- --- local t = { 3,2,5,1,4 } local function compare( a, b ) return a end table.sort( t, compare ) print( table.
2016-05-04 10:42:35 1161
原创 ProtoBuf详解
Protobuf详解按:新公司前端后端,使用的数据化方式是protobuf (Protocol Buffer)。 一,什么是Protobuf官方文档给出的是:a language-neutral, platform-neutral, extensible way of serializing structured data for use in co
2016-04-14 18:14:59 523
原创 VS2013 win7安装提示核心功能严重错误
DDSet_Error: Internal error: 1058设置HTTP属性为自动就OK了
2016-04-11 09:48:41 6456 1
原创 碰撞检测
local scheduler = require("framework.scheduler")-- 定时器检测scheduler.scheduleGlobal(function ( )-- 攻击self:checkCollision()endfunction FightLayer:checkCollision( ) if not self.hero.isA
2016-01-28 20:40:17 485
原创 TableView2
#ifndef __TableView_H__#define __TableView_H__#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC;USING_NS_CC_EXT;class TableView : public Layer, public TableViewDataSource{public: TableV
2016-01-28 20:09:57 333
原创 TableView
#ifndef __TableView_H__#define __TableView_H__#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC;USING_NS_CC_EXT;#if 0class MyDataSource : public TableViewDataSource{public: Vector _ce
2016-01-28 20:07:20 467
原创 ScrollView
#ifndef __ScrollView_H__#define __ScrollView_H__#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC;USING_NS_CC_EXT;class ScrollView : public Layer{public: ScrollView(); ~ScrollView();
2016-01-28 20:05:21 374
原创 cocos KeyBoard
EventListenerKeyboard* keyev = EventListenerKeyboard::create(); keyev->onKeyPressed = [](EventKeyboard::KeyCode key, Event*){ if(key == EventKeyboard::KeyCode::KEY_J) { // 表示j键被按下 CCLOG("j
2016-01-28 20:01:28 474
原创 TiledMap格子地图
#ifndef __T10TiledMap_H__#define __T10TiledMap_H__#include "cocos2d.h"USING_NS_CC;class T10TiledMap : public Layer{public: T10TiledMap(); ~T10TiledMap(); CREATE_FUNC(T10TiledMap); bool in
2016-01-28 19:57:19 1526
原创 cocos中ProgressTimer,进度条
#ifndef __T05ProgressTimer_H__#define __T05ProgressTimer_H__#include "cocos2d.h"USING_NS_CC;static const char *files[]{ "arrows.png ", "arrowsBar.png ", "assetMgrBackground2.png
2016-01-28 19:54:47 621
原创 TCP UDP HTTP
TCP// socket通信 SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == INVALID_SOCKET) { CCLOG("create socket error"); return; } // 连接服务器 struct sockaddr_in addr; addr.sin_family = AF
2016-01-26 00:00:02 319
原创 Json文件解析cocos
std::string str = FileUtils::getInstance()->getStringFromFile("config.json"); rapidjson::Document doc; doc.Parse(str.c_str()); rapidjson::Value& v = doc["init_cfg"]; rapidjson::Value& uploadPort
2016-01-25 23:54:54 506
原创 Cocos Sprite创建的5种方法
方法-:直接创建//适合于要显示这张图片的全部区域;CCSprite *sprite = CCSprite::create("Icon.png");方法二:参数,图片名称 矩形区域//适合于显示图片的部分区域CCSprite* sprite = CCSprite::create("Icon.png",CCRectMake(0, 0, 30, 30));方法三:利用帧
2016-01-25 23:44:52 1689
原创 cc.DrawNode
-- hero的边框 self:heroRect()function FightLayer:heroRect( ... ) if self.heroRectNode then self.heroRectNode:removeFromParent() end -- hero是移动的 随时删除创建 根据Position位置创建 self.heroRectNode = cc.DrawNode
2016-01-25 23:35:23 769 2
原创 for i,v in ipairs(self.npcs) do
创建表 NPC数组 self.npcs = {}插入到数组中able.insert(self.npcs, npc)遍历删除 for i,v in ipairs(self.npcs) do -- 判断是否移除NPC if ( v.face == "right" and v:getPositionX() > display.widt
2016-01-25 18:03:16 1106
原创 quicklua随机数
-- 随机种子math.randomseed(os.time()) local random = math.random() --0~1 之间的小数 local y = math.random(0, display.cy) self:setPosition(x, y) local random = math.random(20) -- 1 ~ 20
2016-01-25 17:15:28 433
原创 读取xml文件的值 字符串的截取
xml文件中为 40001 10001_10009_10002_10003_10035_10017_10016_10019_10010 0.15_0.1_0.15_0.15_0.01_0.11_0.11_0.11_0.11lua文件中为 -- 小怪信息 self.soldierInfo = {} -- 放入Id 概率
2016-01-25 11:51:12 2459
原创 xml格式解析
//printf("项目中的xml解析\n");//得到路径const char *path = lua_tostring(L, 1);//得到 最后的表明const char *tableKey = lua_tostring(L, 2);lua_getglobal(L, "cc");lua_getfield(L, -1, "GameArgs");//把路径转为
2016-01-25 11:07:23 463
原创 打包简记
Android环境搭建:1、启动Eclipse,点击Windows->Preference->Android 在安卓属性配置里面添加Android SDK2、如果没有Android版本,运行Android SDK Manager 下载相关版本(2,2以上 API8 到 4,0版本 API15,要根据需要设置Android版本3.0平板)3、配置NDK,打开环境变量,在当前用户设置NDK
2016-01-25 00:05:11 337
转载 Qicklua 定时器
计时器,就是让系统每隔一段时间调用我们的函数,来处理一些事情,比如飞机战斗游戏中,子弹与敌机之间的碰撞,系统每一帧调用检测函数,检测两者是否碰撞。quick里面帮我们把cocos2dx lua提供的scheduler封装到了framework里面的scheduler.lua文件里面。注意:计时器模块在初始化中不会自动载入,所以我们得手动获得这个模块
2016-01-24 23:58:14 368
原创 quick-lua攻击按键
--攻击按键self.atkBtn = cc.ui.UIPushButton.new({normal = "#joyStickButton.png",pressed = "#joyStickButtonHighLight.png",disabled = "#joyStickButton.png",}):onButtonClicked(function ( ... )pr
2016-01-24 23:53:32 920
原创 GameScene 三木运算符
----组织架构GameScene( 战斗层 控制层)-- require("fightLayer")-- 创建hero (可以再次封装) -- hero:根据controllayer的状态进行控制,进行动作-- 执行的动作,释放技能-- 定时器 移动hero-- require("controlLayer")-- 加载资源,创建控制-- 移动
2016-01-24 23:47:19 955
原创 C++程序员对c 说的话
1、在 C++中几乎不需要用宏,用 const 或 enum 定义明显的常量,用 inline 避免函数调用的额外开销,用模板去刻画一族函数或类型,用 namespace 去避免命名冲突。2、不要在你需要变量之前去声明,以保证你能立即对它进行初始化。3、不要用 malloc,new 运算会做的更好4、避免使用 void*、指针算术、联合和强制,大多数情况下,强制都是设计错误的指示
2016-01-23 23:45:39 407
原创 析构 构造 赋值
拷贝构造(Copy contructor)由己存在的对象,创建新对象。也就是说新对象,不由构造器来构造,而是由拷贝构造器来完成。拷贝构造器的格式是固定的。class 类名{类名(const 类名 & another)拷贝构造体}class A{A(const A & another){}}1 系统提供默认的拷贝构造器。一经实现,不复存在。
2016-01-23 23:44:10 567
原创 简述strcpy、sprintf与memcpy的区别
三者主要有以下不同之处: (1)操作对象不同,strcpy的两个操作对象均为字符串,sprintf的操作源对象可以是多种数据类型,目的操作对象是字符串,memcpy 的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型。 (2)执行效率不同,memcpy最高,strcpy次之,sprintf的效率最低。 (3)实现功能不同,strcpy主要实现字符串变量间的拷贝,sprin
2016-01-23 23:38:09 1235
原创 虚函数
为什么虚函数必须是类的成员函数:虚函数诞生的目的就是为了实现多态,在类外定义虚函数毫无实际用处。 为什么类的静态成员函数不能为虚函数:如果定义为虚函数,那么它就是动态绑定的,也就是在派生类中可以被覆盖的,这与静态成员函数的定义(:在内存中只有一份拷贝;通过类名或对象引用访问静态成员)本身就是相矛盾的。 为什么构造函数不能为虚函数:因为如果构造函数为虚函数的话,它将在执行
2016-01-23 23:37:00 364
原创 stl提供了三个最基本的容器:vector,list,deque
stl提供了三个最基本的容器:vector,list,deque。vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。l
2016-01-23 23:33:38 308
原创 链表 合并
// 单链表.cpp : 定义控制台应用程序的入口点。 //单链表 #include "stdafx.h" #include #include using namespace std; typedef struct node { int data;//节点内容 node *next;//下一个节点 }node;
2016-01-23 23:31:12 303
原创 打印行号 文件名
在项目中使用[cpp] view plaincopy/******************************************************** * @author : ChenMH * @date : 2013/05/24 10:11 * @brief : 定义调试打印宏 ***************
2016-01-23 23:29:40 483
原创 字符串分割,字符串拷贝,单词逆置,单词逆置
l o v a b l ee l b a v o lint main(){ char s[] = "lovable"; char *beg = s; char *end = beg + strlen(beg) - 1;/*单词逆置*/ while(beg { char temp = *beg;
2016-01-23 23:27:34 502
原创 迭代器的遍历删除()
#include #include susing namespace std;int main(){ int arr[] = {10, 20, 30, 40, 10, 10, 50, 30}; vector vec(arr, arr+8);/* 一边遍历一边删除 应该注意++it*/ for(vector::iterator it
2016-01-23 23:17:04 1318
原创 移动 摇杆的创建
function ControlLayer:createDir( )--加入摇杆背景self.dirBg = display.newSprite("#joyStick.png")self:addChild(self.dirBg)self.dirBg:setPosition(self.dirBg:getContentSize().width*0.5 + 20, self.dir
2016-01-20 21:09:37 514
原创 添加touch事件 addNodeEventListener
-- 摇杆球self.dir = display.newSprite("#joyStickCenter.png")self.dirBg:addChild(self.dir)self.orginPoint = cc.p( self.dirBg:getContentSize().width*0.5,self.dirBg:getContentSize().height*0.5 )self
2016-01-20 20:15:23 531
cocos2d-html.min.zip
2019-11-18
python tiny 压缩png,jpg图片
2019-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人