我正在查看Corona SDK并希望改编咖啡演示(http://blog.anscamobile.com/2010/09/create-scrolling-list-views-with-text-and-graphics-in-coronasdk-ios- android-tutorial /)以便它使用此处描述的Retina Display @ 2x图像配置:http://blog.anscamobile.com/2011/01/dynamic-image-resolution-made-easy/
我需要做什么才能将Retina 4的东西集成到tableView库中,从而使Coffee Demo自动Retina 4图像兼容?
所以我来自传统的游戏开发,它使用OOP原理,而且从我看到你可以使用LUA模仿它,一旦你知道你在做什么.在一些代码发布中,我发现了如何使用director类并创建具有new()函数等的文件.
我正在寻找的是一种管理我的武器的方法.我有一个球员和一个对手,我宁愿拥有一个武器类,比如武器佳能.我所做的是:
-- private vars here
local power
local canonSprite
local whatever
local someFunction = function()
...
end
-- Private stuff here
local weaponCanon = {}
weaponCanon.fire = function(atX, atY)
...
end
weaponCanon.reset = function()
...
end
return weaponCanon
Run Code Online (Sandbox Code Playgroud)
然后在我的关卡代码中,我只是这样做:
local weaponCanon = require("weaponCanon")
weaponCanon.fire(100, 100)
Run Code Online (Sandbox Code Playgroud)
这很有效,并且允许我在编写武器时使用"私人"和"公共"心态.问题是,如果我想让玩家和对手拥有一个正典:
local playerWeapon = require("weaponCanon")
local opponentWeapon = require("weaponCanon")
Run Code Online (Sandbox Code Playgroud)
这只是将同一个对象而不是新实例返回给该对象.所以我只能在对手武器位置获得一枚武器.这显然是我想要/需要的.
我们的游戏中有很多武器,如果只有一个版本的每个文件都有一个设置告诉我们它是对手武器还是玩家武器会很不错.另一种方法是复制每个文件并创建一个weaponPlayerCanon和一个weaponOpponentCanon,但我想到修改一个文件并且每次都要更改2个以上的文件时会感到畏缩.
如何让它返回一个实例以及LUA文件的结构是什么?
谢谢或任何和所有的帮助
-d
我为Corona SDK构建了以下应用程序
local hello = "hello";
print(hello);
Run Code Online (Sandbox Code Playgroud)
使用iPhone作为目标..最终的二进制文件是惊人的8.7Mbytes ..
当我尝试将具有多个grfx的复杂应用程序部署到该字段时,这是一个真正的问题.我喜欢相信我做错了什么,这个图像尺寸可能会更小..
任何想法或指针?
根据这篇博文,Corona很小.. http://blog.anscamobile.com/2010/02/flash-iphone-and-beyond/
Thx,F.
我和我的团队正在使用电晕sdk开发游戏,我们的游戏应该适用于iphone和Android设备.
当使用android sdk 2.2进行测试时,性能似乎很差,尽管我们遵循所有内存管理步骤并避免泄漏,涉及全局变量,定时器,转换,显示对象等.
有没有人对这样的性能问题有所了解?当在网上搜索时,大多说它是电晕本身内的一个错误.
我可能错过了这个,但有没有内置的方法将lua表序列化/反序列化为文本文件,反之亦然?
我有一对方法来在具有固定格式的lua表上执行此操作(例如,3列数据,5行).
有没有办法做到这一点与任何LUA表任意格式?
举个例子,给出这个lua表:
local scenes={
{name="scnSplash",
obj={
{
name="bg",
type="background",
path="scnSplash_bg.png",
},
{
name="bird",
type="image",
path="scnSplash_bird.png",
x=0,
y=682,
},
}
},
}
Run Code Online (Sandbox Code Playgroud)
它将被转换为这样的文本:
{name="scnSplash",obj={{name="bg",type="background",path="scnSplash_bg.png",},{name="bird", type="image",path="scnSplash_bird.png",x=0,y=682,}},}
Run Code Online (Sandbox Code Playgroud)
只要文本字符串可以反序列化为空的lua表,就可以以任何方式定义序列化文本的格式.
我会请求你的帮助,因为一个让我疯狂的错误.
哦......我正在使用LUA和Corona SDK btw ......
我正在创建一个船的实例.该船正在实例化,我可以访问其属性,但我无法访问任何方法!按照代码,我不知道该怎么做:
spaceShip.lua:
require('gameConf')
spaceShip = {}
spaceShip.__index = spaceShip
function spaceShip:New(posX, posY, width, height)
local _spaceShip = nil
_spaceShip = {}
setmetatable(_spaceShip, spaceShip)
_spaceShip = display.newRect(posX - width/2, posY - height/2, width, height)
_spaceShip:setFillColor(140, 140, 140, 0)
_spaceShip.width = width
_spaceShip.height = height
local shipShape = { -width/2, -height/2, width/2, -height/2, width/2, height/2, -width/2, height/2 }
local shipShapeMaterial = { density = 1.0, friction = 1.0, bounce = 0.0 , shape = shipShape}
local shipMotor …Run Code Online (Sandbox Code Playgroud) 当我通过分配创建函数时,"if"条件不起作用,但是当我创建函数时,如下面的第二个示例,它可以工作.你能告诉我为什么吗?
不工作:
local start=os.time()
local countDown = function(event)
if((os.time()-start)==3) then
Runtime: removeEventListener("enterFrame", countDown)
end
print(os.time()-start)
end
Runtime:addEventListener("enterFrame", countDown)
Run Code Online (Sandbox Code Playgroud)
工作:
local start=os.time()
local function countDown(event)
if((os.time()-start)==3) then
Runtime: removeEventListener("enterFrame", countDown)
end
print(os.time()-start)
end
Runtime:addEventListener("enterFrame", countDown)
Run Code Online (Sandbox Code Playgroud) 或者我可以在将其添加到ScrollView窗口小部件后访问该项目吗?
例:
local scrollView = widget.newScrollView {...}
scrollView:insert(display.newImage("img1.png", 0, 0))
scrollView:insert(display.newImage("img2.png", 100, 0))
Run Code Online (Sandbox Code Playgroud)
接下来我要删除第一张图片scrollView:
scrollView:remove(1) -- has no effect
Run Code Online (Sandbox Code Playgroud)
更新:我的解决方案:
local scrollView = widget.newScrollView {...}
scrollView.content = {}
scrollView.content[#scrollView.content+1]= display.newImage("img1.png", 0, 0)
scrollView:insert(scrollView.content[#scrollView.content])
scrollView.content[#scrollView.content+1]= display.newImage("img2.png", 0, 0)
scrollView:insert(scrollView.content[#scrollView.content])
...
-- at some point I want to delete some item
scrollView.content[n]:removeSelf()
table.remove(scrollView.content, n)
Run Code Online (Sandbox Code Playgroud) 我已编程多年了,我现在提出的问题可能是我遇到的最奇怪的问题之一.
我的应用程序中有一段代码随机生成一系列令牌,有三种可能的类型,比如A,B或C.
所以10个代币可能是ABCCAAABAC.
在代码块的开头,随机数生成器种子初始化如下:
math.randomseed(seed)
math.random()
Run Code Online (Sandbox Code Playgroud)
现在,不出所料,当种子值保持不变时,我总是得到相同的令牌序列,因为随机生成代码以确定的方式执行.好吧,几乎总是.
实际上,在极少数情况下,出乎同样的种子,我会得到一个不同的随机序列.然后它在我知道之前恢复正常.你可能在想 - 啊,副作用,这可能是一个状态相关的问题,其中生成随机令牌序列的代码块利用一个变量来改变它调用的次数random()(例如).但是,我99%肯定我控制了所有明显的副作用.代码块中只有少数位置可以访问外部状态,并且它们都保持不变.
情节变得更加浓厚 - 这个问题在我一直在构建的应用程序的Android部署上才显而易见.不可否认,这是一个罕见的错误,我似乎无法可靠地重复它.因此它也可能出现在iOS部署中.但我还没有在其他平台上遇到它.我不妨提一下,我正在通过Corona SDK使用lua脚本来开发应用程序.
我已经多想了这个问题,并将其缩小到几个可能性:
所有这些最痛苦的方面是bug的不可重复性.大多数情况下,代码块在给定重复种子的情况下完全确定.然后就好像存在一个非确定性阶段,然后在一段未知的时间后再次消失.我想在这里挑选一位专家的大脑.
这可能会发生什么?此外 - 由于我在Android部署中只看到了这个特定问题,因此可能会有任何特定于平台的特定问题吗?
作为参考,这是完整的代码块.它实际上生成具有两个随机属性(三种颜色之一,三种形状之一)的标记,但这并不意味着问题的本质.
math.randomseed(currentRandomSeed)
math.random()
local tokenListPlan = {}
-- randomly assign weighting distribution
local thresh1, thresh2
while (true) do
local s0 = math.random(1, 99)
local s1 = math.random(1, 99)
local c0 = s0
local c1 = s1 - c0
local c2 = 100 - c1 - c0
if (c0 >= eng.DEVIATION_THRESHOLD …Run Code Online (Sandbox Code Playgroud)