第二部分 显示对象(图片图形按钮精灵)
Phaser 中的显示对象是我们构建绚丽多彩的游戏世界的基础,本笔记记录关于显示对象的学习。
首先:了解一下Phaser中的显示对象种类

然后:了解一下游戏运行流程

接下来,开始一个一个显示对像的使用方法
1、 图片

①单张图片
var game = new Phaser.Game(400, 500, Phaser.AUTO, 'container', state);
function state(game){
this.preload = function(){
game.load.image('cat', 'assets/cat.png');
}
this.create = function(){
game.add.image(100, 100, 'cat');
}
}②整合图片 每小格大小150*162

var game = new Phaser.Game(400, 500, Phaser.AUTO, 'container', state);
function state(game){
this.preload = function(){
game.load.spritesheet('sprite', 'assets/sprite.png', 150, 162);
}
this.create = function(){
game.add.image(0, 0, 'sprite', 0);
game.add.image(200, 50, 'sprite', 1);
game.add.image(0, 200, 'sprite', 2);
game.add.image(200, 250, 'sprite', 3);
}
}2、 图形


关于图形的填充
var graphics = game.add.graphics(0, 0); graphics.beginFill(0xFF0000); //指定填充的颜色 ,还可以有第二个参数,指定透明度,值为0-1之间 graphics.drawRect(0, 0, 100, 100); graphics.drawCircle(180, 100, 100); graphics.drawEllipse(150, 220, 100, 50); graphics.arc(100, 300, 50, 0, Math.PI); graphics.beginFill(0x0000FF); graphics.drawPolygon(50,380, 200,380, 250,430, 180,480, 20,450); graphics.endFill();//结束填充
效果:

关于图形的描边:
var graphics = game.add.graphics(0, 0); graphics.lineStyle(5, 0xFF0000);//第一个参数是描力的宽,第二个是颜色 graphics.drawRect(0, 0, 100, 100); graphics.drawCircle(180, 100, 100); graphics.drawEllipse(150, 220, 100, 50); graphics.arc(100, 300, 50, 0, Math.PI); graphics.lineStyle(5, 0x0000FF); graphics.drawPolygon(50,380, 200,380, 250,430, 180,480, 20,450);

关于画直线线条:
var graphics = game.add.graphics(0, 0); //设置描边宽度和颜色 graphics.lineStyle(3, 0x00FF00); //绘制直线 粗为3 颜色为 graphics.moveTo(50, 50);//moveTo 设置起点 graphics.lineTo(300, 100);//lineTo 设置终点 //绘制折线 graphics.moveTo(50, 200); graphics.lineTo(200, 250); graphics.lineTo(100, 300); graphics.lineTo(200, 350);

关于曲线:
var graphics = game.add.graphics(0, 0); //设置描边宽度和颜色 graphics.lineStyle(3, 0x00FF00); //Phaser中可用的是二次贝塞尔曲线 graphics.moveTo(50, 50);//设置曲线起点 graphics.bezierCurveTo(250,50, 350,350, 50,400);//设置两个控制点((250.50)(350.350))和终点(50.400) //bezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY);

关于清除图形
graphics.clear();//可以清除graphics中绘制的所有图形,重轩填充和描边
3 按钮

var game = new Phaser.Game(400, 500, Phaser.AUTO, 'container', state);
function state(game){
this.preload = function(){
game.load.spritesheet('btn', 'assets/btn.png', 200, 38);
}
this.create = function(){
game.add.button(100, 250, 'btn', function(){
//alert('按钮被点击了!');
}, game, 2, 3, 1, 0);
}
}
效果:
4 精灵
var cat1 = game.add.sprite(200, 250, 'cat'); //var cat1 = game.add.sprite(x, y, key,frame使用的帧,group所属的组);
位置的设置:cat1.x = *** cat1.y=***
锚点的设置:cat1.anchor.set(1, 1);值是0-1间的数,可以设置任何位置,默认为左上角0.0,如果设置为中间就是0.5 0.5
宽和高的设置:cat2.width = 50;cat2.height = 50;
改变颜色:cat2.tint = 16进制颜色
遮罩:图形1 图形2 图形1.mask=图形2,图形2是图形1的遮罩
其它:

例子:
/*var game = new Phaser.Game(400, 500, Phaser.AUTO, 'container', state);
function state(game){
this.preload = function(){
game.load.image('cat', 'assets/cat.png');
}
this.create = function(){
var cat1 = game.add.sprite(200, 250, 'cat');
cat1.anchor.set(1, 1);
var cat2 = game.add.sprite(200, 250, 'cat');
cat2.anchor.set(0.5, 0.5);
var cat3 = game.add.sprite(200, 250, 'cat');
cat3.anchor.set(0, 0);
}
}*/
/*var game = new Phaser.Game(400, 500, Phaser.AUTO, 'container', state);
function state(game){
this.preload = function(){
game.load.image('cat', 'assets/cat.png');
}
this.create = function(){
var cat1 = game.add.sprite(100, 50, 'cat');
var cat2 = game.add.sprite(100, 200, 'cat');
cat2.width = 50;
cat2.height = 50;
var cat3 = game.add.sprite(100, 300, 'cat');
cat3.width = 100;
cat3.height = 200;
}
}*/
/*var game = new Phaser.Game(400, 500, Phaser.AUTO, 'container', state);
function state(game){
this.preload = function(){
game.load.image('cat', 'assets/cat.png');
}
this.create = function(){
var sprite = game.add.sprite(200, 200, 'cat');
sprite.alpha = 0.5; //透明度,0为完全透明,1为完全不透明
sprite.angle = 90; //旋转角度,单位为度
sprite.scale.x = 2; //水平方向缩放,大于1为放大,小于1为缩小
sprite.scale.y = 2; //垂直方向缩放,大于1为放大,小于1为缩小
sprite.visible = true; //是否可见,true为可见,false不可见
//是否需要处理该元素,为false时会在游戏的每一帧中
//都跳过对该元素的处理,且会把该元素设为不可见
//合理的运行这个属性可以提高游戏性能
sprite.exists = true;
}
}*/
/*var game = new Phaser.Game(400, 500, Phaser.AUTO, 'container', state);
function state(game){
this.preload = function(){
game.load.image('cat', 'assets/cat.png');
}
this.create = function(){
var cat1 = game.add.sprite(100, 50, 'cat');
var cat2 = game.add.sprite(100, 200, 'cat');
cat2.tint = 0x0000FF; //蓝色
var cat3 = game.add.sprite(100, 350, 'cat');
cat3.tint = 0x00FF00; //绿色
}
}*/
var game = new Phaser.Game(400, 500, Phaser.AUTO, 'container', state);
function state(game){
this.preload = function(){
game.load.image('bg', 'assets/bg.jpg');
}
this.create = function(){
var bg = game.add.image(0, 0, 'bg'); //背景图
var graphics = game.add.graphics(0, 0);
graphics.beginFill(0xFFFFFF);//必须要填充一个颜色
var circle = graphics.drawCircle(150, 250, 200);//画一个圆
bg.mask = circle; //把圆作为遮罩
}
}5 瓦片精灵
一个小图片,进行拼接

var game = new Phaser.Game(400, 500, Phaser.AUTO, 'container', state);
function state(game){
this.preload = function(){
game.load.image('tile', 'assets/tile.png');
}
this.create = function(){
var tileSprite = game.add.tileSprite(0, 0, game.width, game.height, 'tile');
//game.add.tileSprite(X, Y, W, H, 'tile');
//tileSprite.autoScroll(-20, 0); //每秒20像素向左滚动
//tileSprite.autoScroll(0, -20); //每秒20像素向上滚动
tileSprite.autoScroll(-20, -20); //向左上方滚动
//tileSprite.stopScroll(); //停止滚动
}
}