从2D引擎整体角度去看Quick-Cocos2d-x。第一篇是游戏元素,游戏中最多出现的图片、动画声音等元素。游戏开发贯穿始末的东西,必须从这里说起了。
UIImage
1
2
3
|
cc.ui.UIImage.
new
(
"40.png"
)
:pos(display.cx,display.cy)
:addTo(self)
|
ScaleUIImage
1
2
3
4
|
cc.ui.UIImage.
new
(
"40.png"
)
:setLayoutSize(80,80)
:pos(display.cx,display.cy)
:addTo(self)
|
Scale9UIImage
1
2
3
4
|
cc.ui.UIImage.
new
(
"slice30.png"
,{scale9=
true
})
:setLayoutSize(120,display.cy)
:addTo(self)
|
TTF文本
1
2
3
4
5
6
7
|
cc.ui.UILabel.
new
({
size=16,
color=display.COLOR_BLACK,
})
:pos(display.cx,display.cy)
:addTo(self)
|
Atlas文本
1
2
3
4
5
6
|
atlasLabel=CCLabelAtlas:create(
"AtlasLabel"
,
"tuffy_bold_italic-charmap.png"
,
48,64,string.byte(
''
)
)
:pos(display.left,display.cy)
self:addChild(atlasLabel)
|
Button
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@H_621_404@
19
20
21
22
23
24
|
btn3_img={
normal=
"80x40button_n.png"
,
pressed=
"80x40button_h.png"
,
disabled=
"80x40button_dis.png"
,
}
btn3=cc.ui.UIPushButton.
new
(btn3_img)
:setButtonLabel(
"normal"
,ui.newTTFLabel({
text=
"Button"
,
size=24,
color=ccc3(255,255,255),
}))
:setButtonLabel(
"pressed"
,ui.newTTFLabel({
text=
"Down"
,
size=24,
color=ccc3(255,
}))
:setButtonLabel(
"disabled"
,ui.newTTFLabel({
text=
"Disable"
,
size=24,
color=ccc3(200,200,200),
}))
:pos(display.cx,display.cy)
:addTo(self)
|
CheckBox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
btn1_img={
off=
"30check_off.png"
,
off_pressed=
"30check_off.png"
,
off_disabled=
"30check_off.png"
,
on=
"30check_on.png"
,
on_pressed=
"30check_on.png"
,
on_disabled=
"30check_on.png"
,
}
:setButtonLabelOffset(0,0)
:setButtonLabelAlignment(display.CENTER)
:setButtonSelected(
false
)--初始按下状态
:pos(display.cx,display.cy)
:addTo(self)
|
Radio Group
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@H_621_404@
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
RAdio_BUTTON_IMAGES={
}
:setButtonLabel(cc.ui.UILabel.
new
({text=
"option1"
,color=display.COLOR_BLACK}))
:setButtonLabelOffset(20,0)
:align(display.LEFT_CENTER))
:setButtonLabel(cc.ui.UILabel.
new
({text=
"option2"
,color=display.COLOR_BLACK}))
:setButtonLabelOffset(20,0)
:align(display.LEFT_CENTER))
:addButton(cc.ui.UICheckBoxButton.
new
(RAdio_BUTTON_IMAGES)
:setButtonLabel(cc.ui.UILabel.
new
({text=
"option3"
,color=display.COLOR_BLACK}))
:setButtonLabelOffset(20,0)
:align(display.LEFT_CENTER))
:setButtonLabel(cc.ui.UILabel.
new
({text=
"option4disabled"
,color=display.COLOR_BLACK}))
:setButtonEnabled(
false
)
:setButtonLabelOffset(20,0)
:align(display.LEFT_CENTER))
:setButtonsLayoutMargin(0,0)
:onButtonSelectChanged(function(event)
printf
(
"Option%dselected,Option%dunselected"
,event.selected,event.last)
end)
:pos(display.cx,display.cy)
:addTo(self)
group:getButtonAtIndex(4):setButtonSelected(
true
)
|
HScroll
1
2
3
4
5
6
7
8
9
10
11
12
13
|
SLIDER_IMAGES={
bar=
"120x30hscrollbar.png"
,
button=
"60x30hscrollhandle.png"
,
}
:onSliderValueChanged(function(event)
printf
(string.format(
"value=%0.2f"
,event.value))
end)
:setSliderSize(200,30)
:setSliderValue(75)
:pos(display.cx,display.cy)
:addTo(self)
|
VScroll
1
2
3
4
5
6
7
8
9
10
11
12
13
|
SLIDER_IMAGES2={
bar=
"30x120vscrollbar.png"
,
button=
"30x60vscrollhandle.png"
,
}
end)
:setSliderSize(30,200)
:setSliderValue(75)
:align(display.CENTER,display.cx,display.cy)
:addTo(self)
|
文件Sprite
1
2
3
4
5
|
localsprite1=display.newSprite(
"walkBomb.png"
)
sprite1:setPosition(display.cx,display.cy)
sprite1:setAnchorPoint(0.5,0.5)
sprite1:setScale(1)
self:addChild(sprite1)
|
AtlasSprite
1
2
3
4
|
display.addSpriteFramesWithFile(
"enemy.plist"
,
"enemy.png"
)
localspriteAtlas=display.newSprite(
"#beeBomb.png"
)
spriteAtlas:setPosition(display.cx,display.cy)
self:addChild(spriteAtlas)
|
Sprite Sheet
1
2
3
4
5
|
localsprite=display.newSprite(
"#role01.png"
):pos(display.cx,display.cy)
self:addChild(sprite)
localframes=display.newFrames(
"roled.png"
,1,10,
true
)
localanimation=display.newAnimation(frames,0.3/10)
sprite:runAction(CCRepeatForever:create(CCAnimate:create(animation)))
|
图元Rectangle
1
2
3
|
localred=display.newRect(80,80,{fill=
true
,color=ccc4f(255,0.5)})
red:setPosition(display.cx,display.cy)
self:addChild(red)
|
图元Polygon
1
2
3
4
5
|
localpoints={{0,0},{80,80},{160,}
localpolygon=display.newPolygon(points,0.5)})
polygon:setClose(
true
)
polygon:setPosition(display.cx,display.cy)
self:addChild(polygon)
|
图元Circle
1
2
3
|
localcircle=display.newCircle(80,0.5)})
circle:setPosition(display.cx,display.cy)
self:addChild(circle)
|
Cocos Studio Armature
1
2
3
4
5
6
7
8
|
display.addSpriteFramesWithFile(
"DemoPlayer/DemoPlayer0.plist"
,
"DemoPlayer/DemoPlayer0.png"
)
CCArmatureDataManager:sharedArmatureDataManager():addArmatureFileInfo(
"DemoPlayer/DemoPlayer.ExportJson"
)
localarmature=CCArmature:create(
"DemoPlayer"
)
armature:getAnimation():playWithIndex(0)
armature:setScale(0.2)
armature:setAnchorPoint(ccp(0.5,0.5))
armature:setPosition(ccp(display.cx,display.cy))
self:addChild(armature)
|
DragonBone
1
2
3
4
5
6
7
8
9
10
11
12
13
|
localmanager=CCArmatureDataManager:sharedArmatureDataManager()
manager:addArmatureFileInfo(
"Dragon.png"
,
"Dragon.plist"
,
"Dragon.xml"
)
localdragon=CCArmature:create(
"Dragon"
)
self.animationNames={
"stand"
,
"walk"
,
"jump"
,
"fall"
}
localaniName=self.animationNames[math.random(1,4)]
localanimation=dragon:getAnimation()
animation:setSpeedScale(24/60)--Flashfpsis24,cocos2d-xis60
animation:play(aniName)
dragon:setPosition(display.cx,display.cy-200)
dragon:setScale(math.random(50,100)/100)
self:addChild(dragon)
|
内置Particle
1
2
|
emitter=CCParticleRain:create()
self:addChild(emitter)
|
音效
1
|
|