2013-07-23 3 views
0

привет, мне нужна помощь с этим кодом. Я пытаюсь сделать три шара подпрыгнуть вокруг, оживляя его. Я нашел код, код которого поможет вам в коде кода Corona sdk. Я пытаюсь изменить изображение из круга на изображение, которое у меня есть в моей папке, но теперь удача не будет работать. также я использую API-интерфейс storyboard, мне действительно нужно это благодаря тому, что я новичок в corona sdk.Как анимировать мяч в Corona sdk

это образец кода

этот код работает для меня, но я хочу добавить несколько воздушных шаров и смог отскочить вокруг в своем собственном направлении и подпрыгивают в друг с другом и изменения направления. Я своего рода застрял на этом кто-то может помочь спасибо:) ....................

здесь код, который вы просите прощения за столь долго

local function newBall(params) 
    local xpos = display.contentWidth*0.5 
    local ypos = display.contentHeight*0.5 
    local circle = display.newCircle(xpos, ypos, params.radius); 
    circle:setFillColor(params.r, params.g, params.b, 255); 
    circle.xdir = params.xdir 
    circle.ydir = params.ydir 
    circle.xspeed = params.xspeed 
    circle.yspeed = params.yspeed 
    circle.radius = params.radius 

    return circle 
end 

local params = { 
    { radius=20, xdir=1, ydir=1, xspeed=2.8, yspeed=6.1, r=255, g=0, b=0 }, 
    { radius=12, xdir=1, ydir=1, xspeed=3.8, yspeed=4.2, r=255, g=255, b=0 }, 
    { radius=15, xdir=1, ydir=-1, xspeed=5.8, yspeed=5.5, r=255, g=0, b=255 }, 
-- newBall{ radius=10, xdir=-1, ydir=1, xspeed=3.8, yspeed=1.2 } 
} 

local collection = {} 

-- Iterate through params array and add new balls into an array 
for _,item in ipairs(params) do 
    local ball = newBall(item) 
    collection[ #collection + 1 ] = ball 
end 

-- Get current edges of visible screen (accounting for the areas cropped by "zoomEven" scaling mode in config.lua) 
local screenTop = display.screenOriginY 
local screenBottom = display.viewableContentHeight + display.screenOriginY 
local screenLeft = display.screenOriginX 
local screenRight = display.viewableContentWidth + display.screenOriginX 

function collection:enterFrame(event) 
    for _,ball in ipairs(collection) do 
     local dx = (ball.xspeed * ball.xdir); 
     local dy = (ball.yspeed * ball.ydir); 
     local xNew, yNew = ball.x + dx, ball.y + dy 

     local radius = ball.radius 
     if (xNew > screenRight - radius or xNew < screenLeft + radius) then 
      ball.xdir = -ball.xdir 
     end 
     if (yNew > screenBottom - radius or yNew < screenTop + radius) then 
      ball.ydir = -ball.ydir 
     end 

     ball:translate(dx, dy) 
    end 
end 

Runtime:addEventListener("enterFrame", collection); 

Может кто-то помочь мне изменить изображения с круга на мои balloon01.png, balloon02.png и balloon03.png изображения в моей папке. Кроме того, это ошибка, я получаю, когда я добавить его в моей игре, которые включают раскадровку API

level1.lua 157: попытка вызвать глобальную «newBall» (нулевую ценность)

я пытался опубликовать изображение, но поскольку я новичок, я не могу. У меня есть код, который разбивает мяч на сцену создания, отличную от API истории истории короны SDK, спасибо ...: 0 за вашу помощь

ответ

1

Я обновил код. Просто попробуйте заменить весь ваш код следующего кода:

local xpos,ypos = {},{} 
local xdirection,ydirection = {},{} 
local xMultiplier = {2.8,3.0,4.0}  -- these arrays should contain the values for each objects 
local yMultiplier = {1.0,2.2,5.5}  -- these arrays should contain the values for each objects 
local totalImages = 3  -- no. of images/object that you need in the scene 
local circle = {} 
local diameter = {50,30,20} -- these arrays should contain the values for each objects 

for i=1,totalImages do 
    xpos[i] = display.contentWidth*0.5 
    ypos[i] = display.contentHeight*0.5 
    xdirection[i] = 1 
    ydirection[i] = 1 

    circle[i] = display.newImageRect("balloon0"..i..".png",diameter[i],diameter[i]) 
    circle[i]:setFillColor(255,0,0,255) 
end 

local function animate(event) 
    for i=1,totalImages do 
     xpos[i] = xpos[i] + (xMultiplier[i] * xdirection[i]) 
     ypos[i] = ypos[i] + (yMultiplier[i] * ydirection[i]) 

     if (xpos[i] > display.contentWidth - 20 or xpos[i] < 20) then 
      xdirection[i] = xdirection[i] * -1; 
     end 
     if (ypos[i] > display.contentHeight - 20 or ypos[i] < 20) then 
      ydirection[i] = ydirection[i] * -1; 
     end 

     circle[i]:translate(xpos[i] - circle[i].x, ypos[i] - circle[i].y)  
    end 
end 
Runtime:addEventListener("enterFrame", animate) 

Примечание: Убедитесь, что место следующих графических файлов в той же папке, где ваш main.lua проживает:

  1. balloon01.png
  2. balloon02.png
  3. balloon03.png

Keep Coding ............ :)

+0

эй спасибо за вашу помощь, но я получаю новое сообщение об ошибке, это то, о чем говорит level1.ua 8 попытка индексации локального круга («ноль» value ") Я смотрю на этот учебник, но я нашел код, который работает, но когда я пытаюсь добавить несколько шаров, они подпрыгивают в одном направлении. Я не уверен, как заставить их подпрыгивать и в своем собственном направлении я обновлю код так что вы можете взглянуть на это спасибо за вашу помощь –

+0

PLS опубликовать свой первый код (который вы удалили) также с вопросом. –

+0

Я обновил код. Проверьте, что ... –

Смежные вопросы