cocos2d-x 版本为 3.0
刚开始要做这个效果时个人觉得这种效果网上应该有现成的就搜了一个来用,结果不是那么回事,后来就自己写了,个人觉得效果还不错
先看看我是怎么把C++绑定到lua中的吧
const luaL_reg global_functions [] = {
{"fuck", fuck},
{NULL, NULL}
};
下面这个得是静态的
int AppDelegate::fuck(lua_State* lua_state)
{
auto layer = (Layer*)tolua_tousertype(lua_state, 1, 0);
// 被拖拽的大地图
auto home_layer = (Layer*)tolua_tousertype(lua_state, 2, 0);
HomeLayer* fuck = HomeLayer::create(layer, home_layer);
layer->addChild(fuck);
return 0;
}
好了,这样就可心在lua中调用这个fuck了,唉。。。。对luabinding不熟,团队出急于出效果,看了看引擎中自己绑定的print我就依葫芦画瓢来了这么几句,选这么着吧,以后慢慢研究,我要实现的是类COC中的大地图的缩放以及拖拽效果,在这个版本中,多点触控的接口并没有暴露给lua,我自己呢又没有能力把这块给实现了,于是就交给C++来做了,
本案例是通过把触点转化为圆来解决,个人感觉这是一个巧妙的方法,因为其它的方法我也用过,就觉得这样处理很方便,实现的效果和COC差不多
CZHome.h
#ifndef __CCZ_LUA__CZHome__
#define __CCZ_LUA__CZHome__
#include <iostream>
#include "cocos2d.h"
USING_NS_CC;
struct Circle
{
Circle()
{
cleanup();
}
Point _center_point; // 圆心
float _d;
void cleanup()
{
_d = -1; // 直径
}
};
class HomeLayer:public Layer
{
public:
static HomeLayer* create(Layer* layer, Layer* home_layer);
void onTouchesBegan(const std::vector<Touch*>& touches, Event *unused_event);
void onTouchesMoved(const std::vector<Touch*>& touches, Event *unused_event);
void onTouchesEnded(con