【phina.js】게임 작성 튜토리얼(15퍼즐)(그 2)【숫자의 표시】
(그 1)【피스의 배치】 ←→ (그 3)【피스의 터치】
이번 목표
마지막에는 15 퍼즐 조각을 배치했습니다. 이번에는 다음과 같이 15 퍼즐 조각에 숫자를 표시합니다.
코드는 다음과 같습니다.
phina.globalize();
// 定数
var SCREEN_WIDTH = 640; // 画面横サイズ
var SCREEN_HEIGHT = 960; // 画面縦サイズ
var GRID_SIZE = SCREEN_WIDTH / 4; // グリッドのサイズ
var PIECE_SIZE = GRID_SIZE * 0.95; // ピースの大きさ
var PIECE_NUM_XY = 4; // 縦横のピース数
var PIECE_OFFSET = GRID_SIZE / 2; // オフセット値
// メインシーン
phina.define('MainScene', {
superClass: 'DisplayScene',
// コンストラクタ
init: function() {
// 親クラス初期化
this.superInit();
// 背景色
this.backgroundColor = 'gray';
// グリッド
var grid = Grid(SCREEN_WIDTH, PIECE_NUM_XY);
// ピースグループ
var pieceGroup = DisplayElement().addChildTo(this);
// ピース配置
PIECE_NUM_XY.times(function(spanX) {
PIECE_NUM_XY.times(function(spanY) {
// 番号
var num = spanY * PIECE_NUM_XY + spanX + 1;
// ピース作成
var piece = Piece(num).addChildTo(pieceGroup);
// Gridを利用して配置
piece.x = grid.span(spanX) + PIECE_OFFSET;
piece.y = grid.span(spanY) + PIECE_OFFSET;
// 16番のピースは非表示
if (num === 16) piece.hide();
});
});
},
});
// ピースクラス
phina.define('Piece', {
// RectangleShapeを継承
superClass: 'phina.display.RectangleShape',
// コンストラクタ
init: function(num) {
// 親クラス初期化
this.superInit({
width: PIECE_SIZE,
height: PIECE_SIZE,
cornerRadius: 10,
fill: 'silver',
stroke: 'white',
});
// 数字
this.num = num;
// 数字表示用ラベル
this.label = Label({
text: this.num + '',
fontSize: PIECE_SIZE * 0.8,
fill: 'white',
}).addChildTo(this);
},
});
// メイン
phina.main(function() {
var app = GameApp({
startLabel: 'main',
});
app.run();
});
[runstant로 확인]
코드 설명
숫자 표시
숫자를 표시하려면 Label 클래스를 사용합니다. 이를 위해 Piece 클래스를 다음과 같이 변경합니다.
// ピースクラス
phina.define('Piece', {
// RectangleShapeを継承
superClass: 'RectangleShape',
// コンストラクタ
init: function(num) {
// 親クラス初期化
this.superInit({
width: PIECE_SIZE,
height: PIECE_SIZE,
cornerRadius: 10,
fill: 'silver',
stroke: 'white',
});
// 数字
this.num = num;
// 数字表示用ラベル
this.label = Label({
text: this.num + '',
fontSize: PIECE_SIZE * 0.8,
fill: 'white',
}).addChildTo(this);
},
});
init 함수에 num이라는 인수를 만들고 초기화 시 숫자를 제공합니다.
this.num에 주어진 값을 유지합니다.
Label의 text 속성에 주어진 숫자를 설정하여 addChildTo로 this(Piece)에 추가합니다. 아울러, 폰트 사이즈와 색을 설정하고 있습니다. 조각의 자식 요소로 레이블을 추가하면 조각이 움직일 때도 레이블이 따라갑니다.
숫자 계산
// ピース配置
PIECE_NUM_XY.times(function(spanX) {
PIECE_NUM_XY.times(function(spanY) {
// 番号
var num = spanY * PIECE_NUM_XY + spanX + 1;
// ピース作成
var piece = Piece(num).addChildTo(pieceGroup);
// Gridを利用して配置
piece.x = grid.span(spanX) + PIECE_OFFSET;
piece.y = grid.span(spanY) + PIECE_OFFSET;
// 16番のピースは非表示
if (num === 16) piece.hide();
});
});
이번에는 여기까지
지금까지 각 조각의 중심에 숫자가 표시됩니다.
다음 번에는 조각에 터치 이벤트를 추가하고 싶습니다.
(그 1)【피스의 배치】 ←→ (그 3)【피스의 터치】
Reference
이 문제에 관하여(【phina.js】게임 작성 튜토리얼(15퍼즐)(그 2)【숫자의 표시】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/alkn203/items/c293dcac4a7046233d5e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)