-- for CCLuaEngine traceback
function __G__TRACKBACK__(msg)
print("----------------------------------------")
print("LUA ERROR: " .. tostring(msg) .. "\n")
print(debug.traceback())
print("----------------------------------------")
end
local function main()
-----------------------------------------------------------------
-- avoid memory leak
collectgarbage("setpause", 100)
collectgarbage("setstepmul", 5000)
--[[-------------------------------------------------------------
补充说明:
collectgrabage(opt [, arg])
功能:垃圾收集器的通用接口,用于操作垃圾收集器
参数:
opt--操作方法标志
"stop" : 停止垃圾收集器
"restart" : 重启垃圾收集器
"collect" : 执行一次全垃圾收集循环
"count" : 返回当前Lua中使用的内存量(以KB为单位)
"step" : 单步执行一个垃圾收集.步长"size"由参数arg指定.如果完成一次收集循环,将返回True
"setpause" : 设置arg/100的值作为暂定收集的时长
"setstepmul" : 设置arg/100的值,作为步长的增幅(即新步长 = 旧步长*(arg/100))
--]]-------------------------------------------------------------
-----------------------------------------------------------------
--自定义打印函数,将字符串打印出来
--其实这里可以调用CCLuaLog函数来打印字符串
local cclog = function(...)
print(string.format(...))
end
-----------------------------------------------------------------
-----------------------------------------------------------------
--包含hello2这个脚本,该脚本定义了myadd(x, y)函数
require "hello2"
cclog("result is " .. myadd(3, 5))
-----------------------------------------------------------------
-----------------------------------------------------------------
--获取可视区域
local visibleSize = CCDirector:sharedDirector():getVisibleSize()
--获取可是区域的原点坐标,OpenGL坐标系 左下角为原点
local origin = CCDirector:sharedDirector():getVisibleOrigin()
-----------------------------------------------------------------
-- add the moving dog
local function creatDog()
--dog.png的规格是 210*95, 由两个frame组成规格皆为105*95
local frameWidth = 105
local frameHeight = 95
-- create dog animate
local textureDog = CCTextureCache:sharedTextureCache():addImage("dog.png")
--rect用于捕捉textureDog的纹理并赋给frame0
local rect = CCRectMake(0, 0, frameWidth, frameHeight)
local frame0 = CCSpriteFrame:createWithTexture(textureDog, rect)
--rect用于捕捉textureDog的纹理并赋给frame1
rect = CCRectMake(frameWidth, 0, frameWidth, frameHeight)
local frame1 = CCSpriteFrame:createWithTexture(textureDog, rect)
--创建松鼠精灵
local spriteDog = CCSprite:createWithSpriteFrame(frame0)
spriteDog.isPaused = false
spriteDog:setPosition(origin.x, origin.y + visibleSize.height / 4 * 3)
--接下来的代码是要创建一个CCAction对象,让spriteDog来run这个CCAction对象
--步骤如下:
--1.使用数组animFrames保存序列帧
--2.利用该数组创建一个CCAnimation对象
--3.利用CCAnimation对象创建CCAnimate对象
--4.利用CCAnimate对象创建CCAction对象
--5.run这个CCAction
local animFrames = CCArray:create()
animFrames:addObject(frame0)
animFrames:addObject(frame1)
local animation = CCAnimation:createWithSpriteFrames(animFrames, 0.5)
local animate = CCAnimate:create(animation);
spriteDog:runAction(CCRepeatForever:create(animate))
-----------------------------------------------------------------
-- moving dog at every frame
local function tick()
--如果暂停了,那么返回,不对spriteDog做任何操作
if spriteDog.isPaused then return end
--根据spriteDog的当前position来判断下一个position
local x, y = spriteDog:getPosition()
if x > origin.x + visibleSize.width then
x = origin.x
else
x = x + 1
end
--更新位置
spriteDog:setPositionX(x)
end
--设置每帧调用trick函数
CCDirector:sharedDirector():getScheduler():scheduleScriptFunc(tick, 0, false)
return spriteDog
end
-- create farm
local function createLayerFarm()
local layerFarm = CCLayer:create()
-- add in farm background
local bg = CCSprite:create("farm.jpg")
bg:setPosition(origin.x + visibleSize.width / 2 + 80, origin.y + visibleSize.height / 2)
layerFarm:addChild(bg)
-- add land sprite
for i = 0, 3 do
for j = 0, 1 do
local spriteLand = CCSprite:create("land.png")
spriteLand:setPosition(200 + j * 180 - i % 2 * 90, 10 + i * 95 / 2)
layerFarm:addChild(spriteLand)
end
end
-- add crop
local frameCrop = CCSpriteFrame:create("crop.png", CCRectMake(0, 0, 105, 95))
for i = 0, 3 do
for j = 0, 1 do
local spriteCrop = CCSprite:createWithSpriteFrame(frameCrop);
spriteCrop:setPosition(10 + 200 + j * 180 - i % 2 * 90, 30 + 10 + i * 95 / 2)
layerFarm:addChild(spriteCrop)
end
end
-- add moving dog
local spriteDog = creatDog()
layerFarm:addChild(spriteDog)
-- handing touch events
local touchBeginPoint = nil
--触摸开始
local function onTouchBegan(x, y)
cclog("onTouchBegan: %0.2f, %0.2f", x, y)
touchBeginPoint = {x = x, y = y}
spriteDog.isPaused = true
-- CCTOUCHBEGAN event must return true
return true
end
--触摸移动
local function onTouchMoved(x, y)
cclog("onTouchMoved: %0.2f, %0.2f", x, y)
if touchBeginPoint then
local cx, cy = layerFarm:getPosition()
layerFarm:setPosition(cx + x - touchBeginPoint.x,
cy + y - touchBeginPoint.y)
touchBeginPoint = {x = x, y = y}
end
end
--触摸结束
local function onTouchEnded(x, y)
cclog("onTouchEnded: %0.2f, %0.2f", x, y)
touchBeginPoint = nil
spriteDog.isPaused = false
end
--触屏事件获得eventType:began/moved/ended
local function onTouch(eventType, x, y)
if eventType == "began" then
return onTouchBegan(x, y)
elseif eventType == "moved" then
return onTouchMoved(x, y)
else
return onTouchEnded(x, y)
end
end
--注册Targeted触屏事件
layerFarm:registerScriptTouchHandler(onTouch)
layerFarm:setTouchEnabled(true)
return layerFarm
end
-- create menu
local function createLayerMenu()
local layerMenu = CCLayer:create()
local menuPopup, menuTools, effectID
local function menuCallbackClosePopup()
-- stop test sound effect
SimpleAudioEngine:sharedEngine():stopEffect(effectID)
menuPopup:setVisible(false)
end
local function menuCallbackOpenPopup()
-- loop test sound effect
local effectPath = CCFileUtils:sharedFileUtils():fullPathForFilename("effect1.wav")
effectID = SimpleAudioEngine:sharedEngine():playEffect(effectPath)
menuPopup:setVisible(true)
end
-- add a popup menu
local menuPopupItem = CCMenuItemImage:create("menu2.png", "menu2.png")
menuPopupItem:setPosition(0, 0)
menuPopupItem:registerScriptTapHandler(menuCallbackClosePopup)
menuPopup = CCMenu:createWithItem(menuPopupItem)
menuPopup:setPosition(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2)
menuPopup:setVisible(false)
layerMenu:addChild(menuPopup)
-- add the left-bottom "tools" menu to invoke menuPopup
local menuToolsItem = CCMenuItemImage:create("menu1.png", "menu1.png")
menuToolsItem:setPosition(0, 0)
menuToolsItem:registerScriptTapHandler(menuCallbackOpenPopup)
menuTools = CCMenu:createWithItem(menuToolsItem)
local itemWidth = menuToolsItem:getContentSize().width
local itemHeight = menuToolsItem:getContentSize().height
menuTools:setPosition(origin.x + itemWidth/2, origin.y + itemHeight/2)
layerMenu:addChild(menuTools)
return layerMenu
end
-- play background music, preload effect
-- uncomment below for the BlackBerry version
-- local bgMusicPath = CCFileUtils:sharedFileUtils():fullPathForFilename("background.ogg")
local bgMusicPath = CCFileUtils:sharedFileUtils():fullPathForFilename("background.mp3")
SimpleAudioEngine:sharedEngine():playBackgroundMusic(bgMusicPath, true)
local effectPath = CCFileUtils:sharedFileUtils():fullPathForFilename("effect1.wav")
SimpleAudioEngine:sharedEngine():preloadEffect(effectPath)
-- run
local sceneGame = CCScene:create()
sceneGame:addChild(createLayerFarm())
sceneGame:addChild(createLayerMenu())
CCDirector:sharedDirector():runWithScene(sceneGame)
end
xpcall(main, __G__TRACKBACK__)
相关推荐
什么是Claude 的 Agent Skills?
摘要: Claude的Agent Skills功能支持通过结构化技能包(含指令、脚本、工具)实现任务自动化,如数据分析、文档生成等。核心能力包括:1)技能包管理(如Python脚本+模板);2)工具调用(API/数据库交互);3)子代理协作(拆分复杂任务)。快速上手步骤:创建技能包(如Excel报表生成)、配置工具权限、触发执行;支持多代理并行处理(如SQL查询+可视化)。关键技巧:工具需明确定义参数、利用子代理共享上下文、注重权限管控。官方文档与社区资源提供进阶指导,使Claude成为可编程的数字助手。
cocos2d-lua自学笔记(纯属个人想法,不当之处请见谅)
UIListView(列表视图控件): UIListView是UIScrollView的扩展,创建一个列表视图具体步骤: 1.创建列表视图;2.创建列表视图项 两者有区别,通俗来说,第一步是创建一个框框,第二步则是在框框中添加具体的条目 创建视图: local list=cc.ui.UIListView.new(params) --params参数的意思,可以创建一个列表视图也就是框框
字节开源 DeerFlow 2.0:从 Deep Research 到 Super Agent Harness 的进化之路
GitHub Trending 冠军项目,字节跳动完全开源的超级智能体框架。支持子代理、沙箱执行、长期记忆、技能扩展,可完成从几分钟到几小时的复杂任务。本文深度解析架构设计、安装实战、技能系统,并附上独家配置指南。
cocos2dx+lua学习笔记:事件派发器CCEventDispatcher
cocos2dx内关于事件监听和派发的调度器EventDispatcher相关内容
华为OD机试真题 新系统2026-04-01 C语言 实现【计算数列位置N的值】
1、输入M、N两个数,则按照以下规则形成一个数列; 2、数列的前M个元素的值为1到M; 3、从M+1个元素开始,计算的逻辑为: 如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;
《手把手教你YOLOv9实战》,改进专栏目录
为了提供友好的操作效果,本专栏将会手把手搭建可视化界面,我将用PyQt5 搭建一个可视化界面,可视化界面能够实现基本的图像加载与检测功能,如支持视频、摄像头,还支持更换不同的 YOLOv9 模型,并适应不同领域(如口罩检测系统、人脸检测系统、工业缺陷检测系统等),界面灵活、功能强大。通过YOLOv9加以改进设计,形成新的算法框架,一起水科研和论文,专栏会一直持续更新中,本专栏适合目标检测、分割、分类。
cocos2d-lua学习笔记1
从上一篇搭建好了cocos2d-lua环境,迫不及待的尝试一下,下面是学习的时候的代码 local MainScene = class("MainScene", cc.load("mvc").ViewBase) function MainScene:onCreate() -- add background image display.newSprite("Hel
超声波法检测局部放电的原理与实现
摘要:超声波法通过捕捉局部放电产生的声波信号进行检测,系统由超声波传感器、信号调理单元和数据采集系统组成。其核心应用是局放源定位,主要采用时差定位法和声-电联合定位法。该方法具有抗电磁干扰强、定位精确等优点,但也存在信号衰减大、传播路径复杂等缺点,典型应用于变压器、GIS等设备的在线监测与故障诊断。
cocos2d-x 3.7.1 lua 笔记
display.newSprite(“#xxx.png”) 带#号表示从framecache里面取图,不带则从本地文件读取。 为layer添加触摸事件 local touchLayer = display.newLayer() touchLayer:onTouch(handler(self, self.onTouch)) 事件处理,移除事件 function xxx:onTouc
蓝桥杯第七届省赛试题--“模拟风扇控制系统”
题目要求 功能简述 “模拟风扇控制系统”能够模拟电风扇工作,通过按键控制风扇的转动速度和定时时间,数码管实时显示风扇的工作模式,动态倒计时显示剩余的定时时间,系统主要由数码管显示、单片机最小系统、按键输入和电机控制保护电路组成,系统框图如图 1 所示: 单总线驱动程序、CT107D 单片机考试平台电路原理图以及本题所涉及到的芯片数据手册,可参考计算机上的电子文档。程序流程图及相关工程文件请以考生...
cesium实战目录必看
本文作者长期从事GIS相关工作,专注于三维和地图可视化领域,熟悉Cesium、Three.js、WebGL等开发框架。文章目录展示了作者在Cesium应用中的多项技术实践,涵盖水面反射、离屏渲染、后处理效果、地形裁剪、Shader着色器、动态单体化、气象图、缓冲区域、坡度和坡向分析、三维热力图、通视分析、态势标绘等多个方面。这些内容为开发者提供了丰富的技术参考,展示了Cesium在三维可视化中的强大功能和应用场景。
TRACKBACK
function __G__TRACKBACK__(msg) --引用通知,全局变量 跟踪绑定执行函数发生错误的信息并输出 print("------------------------") print("LUA ERROR: " .. tostring(msg) .. "\n") -- 字符串连接(打印出消息) print(debug.traceback()) End
基于YOLOv8的视频监控违规停车智能识别系统与应用研究
通过这个毕设,你已经从数据准备、模型训练到界面开发,完整走了一遍深度学习项目的流程。把多个停车场的监控数据整合起来,做一个区域级的停车管理平台;加入车牌识别功能,直接定位到违规车辆的车主;试试把YOLO模型再优化一下,让它在手机端也能运行,实现移动巡检。相信我,按照这个教程一步步做,你的毕设不仅能顺利完成,还能做出亮点,让答辩老师眼前一亮。要是过程中遇到什么问题,随时可以再琢磨琢磨,或者找我聊聊,咱们一起把这个毕设做成精品。
Cocos2d-x HelloLua 介绍
猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢!原文地址: http://www.cocos2dev.com/?p=393最近网游使用lua做更新比较火,最近也有人问我能否写下lua的文章。刚新建了一个lua工程,看了下代码,就干脆先介绍下HelloLua吧。边看代码边写的注释,应该基本都写了。-- for CCLuaEngine tracebac
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
Cocos2d-x-Lua示例项目HelloLua
针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
Cocos2d-x Lua入门:HelloLua示例项目详解与实战指南
游戏开发中,跨平台引擎是构建2D移动游戏的关键技术。Cocos2d-x作为一款成熟的开源引擎,通过Lua绑定提供了灵活的脚本化开发能力,其核心原理在于将C++引擎功能暴露给Lua层,实现逻辑与渲染分离。这种架构为开发者带来了快速迭代和热更新的技术价值,尤其适用于需要频繁调整玩法与界面的移动游戏项目。在应用场景上,从简单的“Hello World”演示到复杂的游戏Demo,理解引擎初始化流程、显示对象树和事件分发机制是基础。本文以Cocos2d-x-Lua的HelloLua示例项目为切入点,深入剖析其项目结构
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
Cocos2d-x-Lua示例项目HelloLua,kotlin枚举类
》》main.cpp #include “AppDelegate.h” #include “cocos2d.h” USING_NS_CC; int main(int argc, char *argv[]) { AppDelegate app; return Application::getInstance()->run(); } 以上代码我们可以看到,在main.cpp里,通过#include引入了两个头文件,一个是AppDelegate.h、一个是cocos2d.h。 定义了我们程序的入口方法mai
Cocos2d-x-Lua演示样例项目HelloLua
Cocos2d-x-Lua演示样例项目HelloLua 本篇博客介绍Cocos2d-x中Lua的实例项目,就是使用Cocos2d-x创建的初始项目执行所呈现的农场,这里笔者取名为HelloLua。本篇博客会具体在代码中解析Cocos2d-x 3.1.1创建的Lua项目中实例,一些API的使用。 注:本演示样例项目在Mac系统下创建 首先我们来创建一个Cocos2d-x Lua项目,在...
Cocos2d-x 的“HelloLua” 深入分析
[Cocos2d-x相关教程来源于红孩儿的游戏编程之路 优快云博客地址:http://blog.youkuaiyun.com/honghaier] 红孩儿Cocos2d-X学习园地QQ群:249941957 加群写:Cocos2d-x 本章为我的Cocos2d-x教程一书初稿。望各位看官多提建议! 转载请注明来源:红孩儿的游戏编程之路 优快云博客 Cocos2d-x 的“HelloLu
Cocos2d-x-Lua示例项目HelloLua(1)
希望大家能有一个好心态,想进什么样的公司要想清楚,并不一定是大公司,我选的也不是特大厂。当然如果你不知道选或是没有规划,那就选大公司!希望我们能先选好想去的公司再投或内推,而不是有一个公司要我我就去!还有就是不要害怕,也不要有压力,平常心对待就行,但准备要充足。最后希望大家都能拿到一份满意的 offer!如果目前有一份工作也请好好珍惜好好努力,找工作其实挺累挺辛苦的。这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。
深入浅出cocos2d-x(1):Cocos2d-x 中“HelloLua” 深入分析
我们来看一下Cocos2d-x的HelloLua示例工程。首先编译运行一下这个工程,当然,因为我在HelloWorld工程中改动了CCApplication的run函数和initInstance函数,所以这里要修改一下,与HelloWorld保持一致才能编译成功。哇!一个很COOL的农场游戏。 这几乎是我
Cocos2d-x之LUA脚本引擎深入分析
FROM:http://www.2cto.com/kf/201303/197171.html原文内容如下:首先,我们要知道LUA是个什么东西,至于官方怎么说可以百度去查,但我想告诉你的是LUA就是一种可以在不必修改C++代码的情况下实现逻辑处理的手 段。稍微讲的再明白一点,就是你用指定语法写一些逻辑处理函数然后保存成文本格式,这个文件称为脚本文件,可以被游戏执行。经过若干年的发展,现在在 LUA中...
1729



被折叠的 条评论
为什么被折叠?



