[lua]require “sprite”
local grabber = require(“SpriteGrabber”)
local movieclip = require “movieclip”
require ‘physics’
physics.start()
physics.setGravity(0,0)
local StickLib = require(“lib_analog_stick”)
– DISPLAY
_W = display.contentWidth
_H = display.contentHeight
local screenW = display.contentWidth
local screenH = display.contentHeight
local Text = display.newText( " ", screenW*.6, screenH-20, native.systemFont, 15 )
– HIDDEN STATUS BAR
display.setStatusBar(display.HiddenStatusBar)
–MULTITOUCH
system.activate( “multitouch” )
– Background
local baseline = display.contentHeight/2
local sky = display.newImage(“sky.jpg”)
local enemies = display.newGroup()
– BORDER
local borderDown = display.newRect(0, baseline + 140 ,480, 100)
borderDown:setFillColor(255,255,255,0)
physics.addBody( borderDown, ‘static’,{bounce = 1, friction = 0})
local borderUp = display.newRect(0, -60,480, 90)
borderUp:setFillColor(255,255,255,0)
physics.addBody( borderUp, ‘static’,{bounce = 1, friction = 0})
local borderLeft = display.newRect(0, 0, 20, _H)
borderLeft:setFillColor(255,255,255,0)
physics.addBody( borderLeft, ‘static’,{bounce = 1, friction = 0})
local borderRight = display.newRect(_W - 20, 0, 20, _H)
borderRight:setFillColor(255,255,255,0)
physics.addBody( borderRight, ‘static’,{bounce = 1, friction = 0})
– Scenes
local ufo = {}
ufo[1] = display.newImage(“mountain_big.png”)
ufo[1].xScale = 1.7; ufo[1].yScale = 0.7
ufo[1]:setReferencePoint(display.BottomCenterReferencePoint)
ufo[1].x = 50; ufo[1].y = baseline - 125
ufo[1].dx = 0.1
ufo[2] = display.newImage(“mountain_small.png”)
ufo[2].xScale = 0.6; ufo[2].yScale = 0.6
ufo[2]:setReferencePoint(display.BottomCenterReferencePoint)
ufo[2].x = 120; ufo[2].y = baseline + 100
ufo[2].dx = 0.2
ufo[3] = display.newImage(“Bamboo-rgba.png”)
ufo[3].xScale = 0.4; ufo[3].yScale = 0.4
ufo[3]:setReferencePoint(display.BottomCenterReferencePoint)
ufo[3].x = 480; ufo[3].y = baseline + 140
ufo[3].dx = 0.7
ufo[4] = display.newImage(“mountain_small.png”)
ufo[4].xScale = 0.7; ufo[4].yScale = 0.7
ufo[4]:setReferencePoint(display.BottomCenterReferencePoint)
ufo[4].x = 250; ufo[4].y = baseline + 100
ufo[4].dx = 0.4
ufo[5] = display.newImage(“Palm-arecaceae.png”)
ufo[5].xScale = 0.7; ufo[4].yScale = 0.7
ufo[5]:setReferencePoint(display.BottomCenterReferencePoint)
ufo[5].x = 180; ufo[4].y = baseline + 100
ufo[5].dx = 0.6
ufo[6] = display.newImage(“Greenhouse-Palm-jubaea01.png”)
ufo[6].xScale = 0.7; ufo[4].yScale = 0.7
ufo[6]:setReferencePoint(display.BottomCenterReferencePoint)
ufo[6].x = 290; ufo[4].y = baseline + 100
ufo[6].dx = 0.4
ufo[7] = display.newImage(“Greenhouse-Palm-jubaea01.png”)
ufo[7].xScale = 0.8; ufo[4].yScale = 0.7
ufo[7]:setReferencePoint(display.BottomCenterReferencePoint)
ufo[7].x = 210; ufo[4].y = baseline + 110
ufo[7].dx = 0.5
ufo[8] = display.newImage(“Bamboo-rgba.png”)
ufo[8].xScale = 0.4; ufo[8].yScale = 0.4
ufo[8]:setReferencePoint(display.BottomCenterReferencePoint)
ufo[8].x = 100; ufo[8].y = baseline + 150
ufo[8].dx = 0.7
– MOUNTAIN
local mountain_big = display.newImage(“mountain_big.png”, 132-150, 0)
local mountain_sma = display.newImage(“mountain_small.png”,-10, 161)
local mountain_big = display.newImage(“mountain_big.png”, 250, 40)
local mountain_sma = display.newImage(“mountain_small.png”, 300, 135)
local mountain_big = display.newImage(“mountain_big.png”,50,80)
– GRASS
local grass = display.newImage( “grass.png” )
grass:setReferencePoint( display.CenterLeftReferencePoint )
grass.x = 0
grass.y = baseline + 150
local grass2 = display.newImage( “grass.png” )
grass2:setReferencePoint( display.CenterLeftReferencePoint )
grass2.x = 480
grass2.y = 300
–GROUND
local ground = display.newRect( 0, baseline + 150, 480, 90 )
ground:setFillColor( 0x31, 0x5a, 0x18 )
local tPrevious = system.getTimer()
local function move(event)
local tDelta = event.time - tPrevious
tPrevious = event.time
local xOffset = ( 0.4 * tDelta )
grass.x = grass.x - xOffset
grass2.x = grass2.x - xOffset
if (grass.x + grass.stageWidth) < 0 then
grass:translate( 480 * 2, 0)
end
if (grass2.x + grass2.stageWidth) < 0 then
grass2:translate( 480 * 2, 0)
end
local i
for i = 1, #ufo, 1 do
ufo[i].x = ufo[i].x - ufo[i].dx * tDelta * 0.2
if (ufo[i].x + ufo[i].stageWidth) < 0 then
ufo[i]:translate( 480 + ufo[i].stageWidth * 2, 0 )
end
end
end
– Start everything moving
Runtime:addEventListener( “enterFrame”, move );
– PLAYER
local player = display.newImage(“goku1.png”)
player.name = ‘player’
player.x = screenW* .2
player.y = screenH* .5
physics.addBody(player,‘dynamic’,{bounce = 0})
– RECTANGLE FOR SHOOT
local rect = display.newRect(_W/2 + 93,_H/2,_W/2+ 150, _H/2)
rect:setFillColor(255,255,255, 30)
–Joystick/Player Movement
MyStick = StickLib.NewStick(
{
x = screenW*.1,
y = screenH*.85,
thumbSize = 16,
borderSize = 32,
snapBackSpeed = .75,
R = 255,
G = 255,
B = 255
} )
MyStick2 = StickLib.NewStick(
{
–x = screenW*.1,
–y = screenH*.85,
x = 550,
y = 850,
–Thumb size is inner circle, border size is outer circle
thumbSize = 40,
borderSize = 64,
snapBackSpeed = .75,
R = 255,
G = 0,
B = 0
} )
local function main( event )
– MOVE THE PLAYER
MyStick:move(player, 10.0, false)
MyStick2:move(player, 7.0, true)
– SHOW STICK INFO
Text.text = “ANGLE = “…MyStick:getAngle()…” DISTANCE = “…math.ceil(MyStick:getDistance())…” PERCENT = “…math.ceil(MyStick:getPercent()*100)…”%”
end
Runtime:addEventListener( “enterFrame”, main )
– SHOOT BULLET WITH TRANSITION
local onBullet = function( self, event )
bullet = display.newImage(‘bullet.png’)
bullet.x = player.x + bullet.contentWidth
bullet.y = player.y + 5
physics.addBody(bullet,{isSensore = true, isBullet = true})
transition.to(bullet, {x = player.x + 1200, y = player.y, time = 3000})
bullet.collision = onCollision; – If a collision is detected, fire the function onCollision.
bullet:addEventListenr( “collision”, bullet );
end
rect:addEventListener(‘tap’, onBullet)
– MY ENEMY SPRITE SHEET
local enemyTable = {}
local i = 0
local function foo(event)
if event.phase == “ended” then
print(event.target.name)
end
if event.target.name == “name is: 3” then
event.target:removeEventListener(“touch”, foo)
print(“you can add another listener here now”)
end
end
local function spawn_enemies()
i=i+1
enemyTable[i] = movieclip.newAnim{ “e1.png”, “e2.png”, “e3.png”, “e4.png”, “e5.png”, “e6.png” }
enemyTable[i].x = math.random(390,400)
enemyTable[i].y = math.random(1,350)
enemyTable[i]:play{ startFrame=1, endFrame=6, loop=0, remove=false }
physics.addBody(enemyTable[i],‘dynamic’, {isSensor= true, rotation = false, bounce = 0})
enemyTable[i]:setLinearVelocity(-100,0)
enemyTable[i].name = "name is: "…i
enemyTable[i]:addEventListener(“touch”, foo)
for i,v in pairs(enemyTable) do
print(i,v)
end
end
timer.performWithDelay(500, spawn_enemies, 5)
local onBulletCollision = function( self, event )
if event.phase == “began” and event.other.myName ==“bullet” then
enemyTable[i].isVisible = false
enemyTable[i]:removeSelf()
enemyTableSet:dispose()
levelGroup:remove(enemyTable[i])
Runtime:removeEventListener(“enterFrame”, movesprite)
end
end
[lua] [import]uid: 99231 topic_id: 21538 reply_id: 321538[/import]