- ブログメニュー
- 9月の活動記録
ブログ
セガのサイトからソースをダウンロードして作ってみた。 ぷよぷよ動作検証
- ビューポート
- name属性を「viewport」と指定すると、モバイルデバイスのビューポートに関する設定を行うことができます。
<meta name="viewport" content="width = device-width">
デバイスの画面サイズにあわせてページを表示するために最低限設定する必要がある。
- http-equiv 属性で示すことができるメタデータ
-
- Content-Security-Policy : コンテンツセキュリティポリシー
- Content=”default-src”
//ビューポート
<meta name="viewport" content="width=device-width, initial-scale=1,
maximum-scale=1, user-scalable=no">
//
<meta http-equiv="Content-Security-Policy" content="default-src * data: gap:
content: https://ssl.gstatic.com; style-src *
'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
TVアニメシリーズも4期まで放送されたオーバーロード。今週末に近所の映画館で見てこようと思います。楽しみ。
数値計算の方法をまとめてみた。
var a:Number = -2.3;
var b:Number = 2.6;
var c:Number = 5.4;
var d:Number = 5.7;
//切り捨て
trace(Math.floor(a)); //出力:-3
trace(Math.floor(b)); //出力:2
trace(Math.floor(c)); //出力:5
trace(Math.floor(d)); //出力 : 5
//切り上げ
trace(Math.ceil(a)); //出力:-2
trace(Math.ceil(b)); //出力:3
trace(Math.ceil(c)); //出力:6
trace(Math.ceil(d)); //出力 : 6
//四捨五入
trace(Math.round(a)); //出力:-2
trace(Math.round(b)); //出力:3
trace(Math.round(c)); //出力:5
trace(Math.round(d)); //出力 : 6
- 切り捨て
- floor()
整数部分をそのまま残し、小数点以下を0とする丸めを「切り捨て」という。
- 切り上げ
- ceil()
小数点以下が0でなかった場合整数部分を1増やし、小数点以下を0とする丸めを「切り上げ」という。
- 四捨五入
- round()
端数が0.5未満なら切り捨て、0.5以上なら切り上げる「半数切り上げ」の丸めを「四捨五入」という。
演算子?:を使った条件分岐
条件式がTRUEならば値が1、条件式がFALSEならば値2を返します。
- 書式
- 条件式 ? 値1 : 値2;
//大きい方の値をCに代入する
var a:int = 60;
var b:int = 90;
var c:int = (a > b) ? a : b;
trace(c); //出力 90
当初シンボルを背景に表示する方法を採用したのだが、なぜかプレイヤーの操作がカクツク事象が発生することがわかったので、残念ながら背景ブロックの表示はステージにムービークリップを貼り付けることにした。
画面サイズ: 650px × 350px
プレイヤー画像サイズを修正 → 40px × 40px
プレイヤー移動範囲
横幅: 70px ~ 580px
縦幅: 20px ~ 280px
//変数宣言
//キャラクターサイズ
var vx: int = 0;
var vy: int = 0;
var pixel: int = 50;
var player_pixel = 40;
var playerHalfWidth: int = 20;
var playerHalfHeight: int = 20;
var speed: int = 10;
var panel_width: int = 13;
var panel_height: int = 7;
var newX: int, newY: int;
var mx1: int, my1: int;
var mx2: int, my2: int;
var mx3: int, my3: int;
var mx4: int, my4: int;
var d: uint = 5;
var gravity: int = 10;
var jump:int = 20;
var maze: Array = [
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
];
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function keyDownHandler(eventObj: KeyboardEvent): void {
switch (eventObj.keyCode) {
case Keyboard.RIGHT:
vx = speed;
break;
case Keyboard.LEFT:
vx = -speed;
break;
case Keyboard.UP:
vy = -jump;
break;
/*case Keyboard.DOWN:
vy = speed;
break;*/
} //switch (eventObj.keyCode) {
} //keyDownHandler
function keyUpHandler(eventObj: KeyboardEvent): void {
if (eventObj.keyCode == Keyboard.RIGHT || eventObj.keyCode == Keyboard.LEFT) {
vx = 0;
}
if (eventObj.keyCode == Keyboard.UP || eventObj.keyCode == Keyboard.DOWN) {
vy = 0;
}
}
function enterFrameHandler(event: Event): void {
//移動範囲
player.x += vx;
player.y += gravity + vy;
//xが70以上 580以下で移動
if(player.x < 0 + playerHalfWidth + pixel){
player.x = playerHalfWidth + pixel;
}
else if(player.x > stage.stageWidth - playerHalfWidth - pixel){
player.x = stage.stageWidth - playerHalfWidth - pixel;
}
//yが20以上 280以下で移動
if(player.y < 0 + playerHalfHeight){
player.y = playerHalfHeight;
}
else if(player.y > stage.stageHeight - pixel - playerHalfHeight){
player.y = stage.stageHeight - pixel - playerHalfHeight;
}
}
背景を表示できるようになったら、プレイヤーの移動範囲を制限する。
プレイヤー画像サイズは 50px:50px
ライブラリに登録されているムービークリップでマップを描こう
//変数宣言
var speed: int = 25;
var vx: int = 0;
var vy: int = 0;
var pixel: int = 50;
var panel_width: int = 13;
var panel_height: int = 7;
var maze: Array = [
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
];
for (var i = 0; i < panel_height; i++) {
for (var j = 0; j < panel_width; j++) {
var block_mc: MovieClip = new block();
block_mc.x = j * pixel;
block_mc.y = i * pixel;
if(maze[i][j] == 1){
addChild(block_mc);
}
}
ActionScriptを使ってアクションゲームを作ろう
var rows:uint = 8; //行
var lines:uint = 12; //列
var d:Number = 5; //スキマ
var w:Number = (stage.stageWidth - d)/rows-d; //(650-5)/8-5=72.625
var h:Number = (stage.stageHeight-d)/lines-d; //(350-5)/12-5=75.625
var maze:Array = [
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1]
];
//スプライトをタイル状に並べる
for(var i:int = 0; i<lines; i++){ //12行:縦:Y軸
for(var j:int = 0;j<rows; j++){//8列:横:X軸
if(maze[i][j] == 1){ //maze[y][x]
var fillColor:uint = 0xFFFFFF*Math.random();
var tile_sp:Sprite = new Sprite();
tile_sp.graphics.beginFill(fillColor);
tile_sp.graphics.drawRect(0,0,w,h);
tile_sp.graphics.endFill();
tile_sp.x=d+(w+d)*j; //5+(72.625+5) * j
tile_sp.y=d+(h+d)*i;//5 +(75.625+5) * i
addChild(tile_sp); //タイルを表示
}
}
}
プロフィール
| 名前 | ぬえさぶろう |
|---|---|
| 仕事 | PCの修理受付・取扱説明書作成 |
| 好物 | 大豆食品 |
| スキル |
|