enchant(); window.focus(); var _DIR_ = SwitchApps.scriptDir(); /*************************** 定数 ***************************/ // パラメータ var SCREEN_W = window.screen.width; //スクリーンの幅 var SCREEN_H = window.screen.height; //スクリーンの高さ if(window.navigator.platform == "iPad") { var SCREEN_W = $(window).width(); //スクリーンの幅 var SCREEN_H = $(window).height()-44; //スクリーンの高さ } // 画像 var STEP_BG = _DIR_ + "/images/step_bg360.png"; var STEP1 = _DIR_ + "/images/step1.png"; var STEP2 = _DIR_ + "/images/step2.png"; var STEP3 = _DIR_ + "/images/step3.png"; var ALPHA_BG = _DIR_ + "/images/alpha_bg.png"; var RADIUS_BG = _DIR_ + "/images/radius_bg.png"; var SPEED_BG = _DIR_ + "/images/speed_bg.png"; var BAR_METER = _DIR_ + "/images/bar_meter.png"; var BAR_METER_L = _DIR_ + "/images/bar_meter_l.png"; var BAR_R = _DIR_ + "/images/bar_r.png"; var BAR_L = _DIR_ + "/images/bar_l.png"; var BAR_HUKIDASI = _DIR_ + "/images/bar_hukidasi.png"; var BAR_HUKIDASI_L = _DIR_ + "/images/bar_hukidasi_l.png"; var BAR_HUKIDASI_R = _DIR_ + "/images/bar_hukidasi_r.png"; var SE_BG = _DIR_ + "/images/se_bg.png"; var SE_NONE = _DIR_ + "/images/se_none.png"; var SE_DOREMI = _DIR_ + "/images/se_doremi.png"; var SE_BUNI = _DIR_ + "/images/se_buni.png"; var SE_MOKYU = _DIR_ + "/images/se_mokyu.png"; var BACK_BG = _DIR_ + "/images/back_bg.png"; var BACK_CLEAR = _DIR_ + "/images/back_clear.png"; var BACK_WHITE = _DIR_ + "/images/back_white.png"; var BACK_BLACK = _DIR_ + "/images/back_black.png"; var BUTTON_BG = _DIR_ + "/images/button_bg380.png"; var BUTTON_RESET = _DIR_ + "/images/button_reset.png"; var BUTTON_SAVE = _DIR_ + "/images/button_save.png"; var BUTTON_CLOSE = _DIR_ + "/images/button_close.png"; var COLOR_BG = _DIR_ + "/images/color_bg380.png"; var COLOR_RANDOM = _DIR_ + "/images/color_random.png"; var COLOR01 = _DIR_ + "/images/color01.png"; var COLOR02 = _DIR_ + "/images/color02.png"; var COLOR03 = _DIR_ + "/images/color03.png"; var COLOR04 = _DIR_ + "/images/color04.png"; var COLOR05 = _DIR_ + "/images/color05.png"; var COLOR06 = _DIR_ + "/images/color06.png"; //var CURSOR = _DIR_ + "/images/cursor.png"; var SETTING = _DIR_ + "/images/setting.png"; var DES_STEP1 = _DIR_ + "/images/des_step1.png"; var DES_STEP2 = _DIR_ + "/images/des_step2.png"; var DES_STEP3 = _DIR_ + "/images/des_step3.png"; // SE、BGM //var SE1 = _DIR_ + "/sounds/reflection.mp3"; var BUNI = _DIR_ + "/sounds/buni.mp3"; //var SE3 = _DIR_ + "/sounds/teten.mp3"; //var SE4 = _DIR_ + "/sounds/koan.mp3"; var MOKYU = _DIR_ + "/sounds/mokyu.mp3"; var SE6 = _DIR_ + "/sounds/powan.mp3"; var PIANO1 = _DIR_ + "/sounds/piano1.mp3"; var PIANO2 = _DIR_ + "/sounds/piano2.mp3"; var PIANO3 = _DIR_ + "/sounds/piano3.mp3"; var PIANO4 = _DIR_ + "/sounds/piano4.mp3"; var PIANO5 = _DIR_ + "/sounds/piano5.mp3"; var PIANO6 = _DIR_ + "/sounds/piano6.mp3"; var PIANO7 = _DIR_ + "/sounds/piano7.mp3"; var PIANO8 = _DIR_ + "/sounds/piano8.mp3"; // アセットリスト var ASSETS = [ STEP_BG, STEP1, STEP2, STEP3, ALPHA_BG, RADIUS_BG, SPEED_BG, BAR_METER, BAR_METER_L, BAR_R, BAR_L, BAR_HUKIDASI, BAR_HUKIDASI_L, BAR_HUKIDASI_R , SE_BG, SE_NONE, SE_DOREMI, SE_BUNI, SE_MOKYU, BACK_BG, BACK_CLEAR, BACK_WHITE, BACK_BLACK, BUTTON_BG, BUTTON_RESET, BUTTON_SAVE, BUTTON_CLOSE, COLOR_BG, COLOR_RANDOM, COLOR01, COLOR02, COLOR03, COLOR04, COLOR05, COLOR06, SETTING, DES_STEP1, DES_STEP2, DES_STEP3, PIANO1, PIANO2, PIANO3, PIANO4, PIANO5, PIANO6, PIANO7, PIANO8, MOKYU, BUNI ]; var logger = null; $(document).ready(function(){ //$('#setting-button').remove(); logger = new SwitchApps.Logger(SwitchApps.app.id, null); /*ログの設定*/ LOG_switch = logger.addHeader('スイッチ入力'); LOG_stamp = logger.addHeader('描画'); LOG_step1 = logger.addHeader('ステップ1に変更'); LOG_step2 = logger.addHeader('ステップ2に変更'); LOG_step3 = logger.addHeader('ステップ3に変更'); LOG_alphamax = logger.addHeader('透明度最大値変更'); LOG_alphamin = logger.addHeader('透明度最小値変更'); LOG_radiusmax = logger.addHeader('大きさ最大値変更'); LOG_radiusmin = logger.addHeader('大きさ最小値変更'); LOG_speed = logger.addHeader('速度変更'); LOG_senone = logger.addHeader('音なし'); LOG_sedoremi = logger.addHeader('音ドレミ'); LOG_sebuni = logger.addHeader('音ぶにっ'); LOG_semokyu = logger.addHeader('音もきゅ'); LOG_bcclear = logger.addHeader('背景透明'); LOG_bcwhite = logger.addHeader('背景白'); LOG_bcblack = logger.addHeader('背景黒'); LOG_reset = logger.addHeader('絵リセット'); LOG_save = logger.addHeader('保存'); LOG_setopen = logger.addHeader('設定開く'); LOG_setclose = logger.addHeader('設定閉じ'); LOG_clrrandon = logger.addHeader('色ランダムON'); LOG_mizuon = logger.addHeader('水色ON'); LOG_blueon = logger.addHeader('青ON'); LOG_pinkon = logger.addHeader('ピンクON'); LOG_redon = logger.addHeader('赤ON'); LOG_yellowon = logger.addHeader('黄ON'); LOG_greenon = logger.addHeader('緑ON'); LOG_clrrandoff = logger.addHeader('色ランダムOFF'); LOG_mizuoff = logger.addHeader('水色OFF'); LOG_blueoff = logger.addHeader('青OFF'); LOG_pinkoff = logger.addHeader('ピンクOFF'); LOG_redoff = logger.addHeader('赤OFF'); LOG_yellowoff = logger.addHeader('黄OFF'); LOG_greenoff = logger.addHeader('緑OFF'); //AIUEO = {set:2}, //createSettingBox("a","a",AIUEO,40,"a","s","d"); }); /************************************************************/ /************************ グローバル変数 ************************/ var game = null; // FPS var fps = 30; // stamp用パラメータ var delay = 1000; // (this.delay/1000)秒で円が描画完了 // 各種フラグ var setting_flg = 0; // 設定UIが画面内にあるかどうか(0:なし, 1:あり) var color_flg = 1; // (0:カラー一定 1:カラーランダム) var color_box = new Array( "color01", "color02", "color03", "color04", "color05", "color06"); // 使う色を入れる。中にはキャラ型の色番号が入る var mode_flg = 1; // 描画モード(1:stamp, 2:spread) var type_flg = 2; // スタンプモードのタイプ(1:クリックしたところに円, 2:ランダムで円) var se_flg = 1; // stamp時の音(0:なし, 1:ドレミ , 2:ぶにっ, 3:もきゅ) //var se_flg2 = 0; // spread時の音(0:なし, 1:ドレミ, 2:もきゅ) var back_flg = 0; //back_flg = 0:透明, 1:白, 2:黒 var switch_flg = 0; //キー入力がどうか判定 0:タッチ 1:キー // 各種パラメータ var r = 0; var g = 0; var b = 0; //var r_min = 0; //var r_max = 255; //var g_min = 0; //var g_max = 255; //var b_min = 0; //var b_max = 255; var alpha_min = 5; var alpha_max = 10; var goal_min = 10; // stamp更新値 var goal_max = 100; var speed = 2; // spread更新値 /************************************************************/ /************************* 汎用処理 **************************/ // ランダム値生成 var randfloat = function(min, max) { return Math.random()*(max-min)+min; }; // color01の色の設定 var setColor01 = function() { if(color_flg == 0) { r = 51; g = 204; b = 204; }else { g = randfloat(100, 255)|0; b = randfloat(100, 255)|0; if(g > b){ while(b+50 <= g) { b = randfloat(100, 255)|0; } r = randfloat(0, b)|0; }else { while(g+100 <= b) { g = randfloat(100, 255)|0; } r = randfloat(0, g)|0; } } } var setColor02 = function() { var difference = 101; if(color_flg == 0) { r = 51; g = 102; b = 255; }else { b = randfloat(155, 255)|0; if(b <= 200) { r = randfloat(0, 50)|0; g = randfloat(0, 50)|0; } else { while(difference > 100) { r = randfloat(0, b)|0; g = randfloat(0, b)|0; difference = (r > g)? r-g : g-r; } } } } var setColor03 = function() { if(color_flg == 0) { r = 255; g = 0; b = 255; }else { r = randfloat(100, 255)|0; b = randfloat(100, 255)|0; if(r > b){ while(b+50 <= r) { b = randfloat(100, 255)|0; } g = randfloat(0, b)|0; }else { while(r+50 <= b) { r = randfloat(100, 255)|0; } g = randfloat(0, r)|0; } } } var setColor04 = function() { var difference = 101; if(color_flg == 0) { r = 255; g = 80; b = 80; }else { r = randfloat(155, 255)|0; if(r <= 200) { b = randfloat(0, 50)|0; g = randfloat(0, 50)|0; } else { while(difference > 100) { b = randfloat(0, r)|0; g = randfloat(0, r)|0; difference = (b > g)? b-g : g-b; } } } } var setColor05 = function() { if(color_flg == 0) { r = 255; g = 255; b = 0; }else { g = randfloat(100, 255)|0; r = randfloat(100, 255)|0; if(g > r){ while(r+50 <= g) { r = randfloat(100, 255)|0; } b = randfloat(0, r)|0; }else { while(g+100 <= r) { g = randfloat(100, 255)|0; } b = randfloat(0, g)|0; } } } var setColor06 = function() { var difference = 101; if(color_flg == 0) { r = 51; g = 204; b = 51; }else { g = randfloat(155, 255)|0; if(g <= 200) { r = randfloat(0, 50)|0; b = randfloat(0, 50)|0; } else { while(difference > 100) { r = randfloat(0, g)|0; b = randfloat(0, g)|0; difference = (r > b)? r-b : b-r; } } } } /*************************************************************/ /************************* メイン処理 ***************************/ window.onload = function () { game = new Core(SCREEN_W, SCREEN_H); //ブラウザの大きさに合わせてゲーム領域を表示 // SE、画像の読み込み game.preload(ASSETS); game.onload = function () { var scene_root = game.rootScene; scene_root.backgroundColor = "#ffffff"; this.fps = fps; // ドロワーの追加 var drawer = new Drawer(); drawer.ontouchstart = function(e) { LOG_switch(); // 設定UIが出ていたらしまう if(setting_flg == 1) { LOG_setclose(); if(SCREEN_W < 960){ ui_group.tl.moveTo(0, -600, 15, enchant.Easing.QUINT_EASEOUT); }else { ui_group.tl.moveTo(0, -400, 15, enchant.Easing.QUINT_EASEOUT); } setting_flg = 0; } else { // モードとタイプに合わせて円データを追加 switch(mode_flg){ case 1: if(type_flg == 1){ if(switch_flg == 0) { this.stamp(e.x, e.y); } else if(switch_flg == 1) { this.stamp( randfloat(0,SCREEN_W)|0, randfloat(0,SCREEN_H)|0); } switch_flg = 0; }else if(type_flg == 2){ this.stamp( randfloat(0,SCREEN_W)|0, randfloat(0,SCREEN_H)|0); } break; case 2: if(switch_flg == 0) { this.spread(e.x, e.y); } else if(switch_flg == 1) { this.stamp( randfloat(0,SCREEN_W)|0, randfloat(0,SCREEN_H)|0); } switch_flg = 0; break; default: alert("エラー発生。プログラムを再起動してください。"); break; } } } scene_root.addChild(drawer); //キーバインドの設定 2014-12-07追加 game.keybind(49, 'a'); game.keybind(51, 'a'); game.keybind(32, 'a'); game.keybind(10, 'a'); game.keybind(13, 'a'); game.keybind(123, 'a'); var switchInput = function() { var ev = new Event('touchstart'); // 発火! switch_flg = 1; drawer.dispatchEvent(ev); //scene_root.removeEventListener('abuttondown', switchInput); } scene_root.addEventListener('abuttondown', switchInput); scene_root.onabuttonup = function() { //drawer.onabuttonup(); //scene_root.addEventListener('abuttondown', switchInput); } // 円追加時のSE drawer.se1 = new Array(8); drawer.se1[0] = game.assets[PIANO1]; drawer.se1[1] = game.assets[PIANO2]; drawer.se1[2] = game.assets[PIANO3]; drawer.se1[3] = game.assets[PIANO4]; drawer.se1[4] = game.assets[PIANO5]; drawer.se1[5] = game.assets[PIANO6]; drawer.se1[6] = game.assets[PIANO7]; drawer.se1[7] = game.assets[PIANO8]; drawer.se2 = game.assets[BUNI]; drawer.se3 = game.assets[MOKYU]; // 設定画面表示ボタン var setting = new Sprite(123, 49); setting.image = game.assets[SETTING]; //setting.moveTo(SCREEN_W-setting.width, 0); setting.moveTo(SCREEN_W-setting.width, setting.height+15); scene_root.addChild(setting); setting.ontouchstart = function() { switch(setting_flg){ case 0: //ui_group.tl.moveTo(0, 0, 15, enchant.Easing.QUINT_EASEOUT); LOG_setopen(); ui_group.tl.moveTo(0, setting.height+15, 15, enchant.Easing.QUINT_EASEOUT); setting_flg = 1; break; case 1: LOG_setclose(); if(SCREEN_W < 960){ ui_group.tl.moveTo(0, -600, 15, enchant.Easing.QUINT_EASEOUT); }else { ui_group.tl.moveTo(0, -400, 15, enchant.Easing.QUINT_EASEOUT); } setting_flg = 0; break; default: break; } } //**************** 設定UI ****************// //カーソル(hover判定用) var cursor = new Sprite(0, 0); // オンマウス時の説明(とりあえずstepのみ) var des_step1 = new Sprite(436, 73); des_step1.image = game.assets[DES_STEP1]; des_step1.cnt = 0; des_step1.moveTo(113, 196); var des_step2 = new Sprite(384, 70); des_step2.image = game.assets[DES_STEP2]; des_step2.cnt = 0; des_step2.moveTo(113, 196); var des_step3 = new Sprite(332, 69); des_step3.image = game.assets[DES_STEP3]; des_step3.cnt = 0; des_step3.moveTo(113, 196); // 書き方 var step_bg = new Sprite(360, 200); step_bg.image = game.assets[STEP_BG]; var step1 = new Sprite(113, 43); step1.image = game.assets[STEP1]; step1.frame = 2; step1.moveTo(161, 25); step1.onMouse = false; var step2 = new Sprite(113, 43); step2.image = game.assets[STEP2]; step2.frame = 0; step2.moveTo(161, 78); step2.onMouse = false; var step3 = new Sprite(113, 43); step3.image = game.assets[STEP3]; step3.frame = 0; step3.moveTo(161, 131); step3.onMouse = false; var step_group = new Group(); step_group.addChild(step_bg); step_group.addChild(step1); step_group.addChild(step2); step_group.addChild(step3); step1.ontouchstart = function() { LOG_step1(); this.frame = 2; step2.frame = 0; step3.frame = 0; mode_flg = 1; type_flg = 2; drawer.se_cnt1 = 0; if(se_flg == 3) { se_flg = 2; se_buni.frame = 2; } ui_group.removeChild(speed_group); ui_group.addChild(radius_group); se_group.removeChild(se_mokyu); se_group.addChild(se_buni); } step1.onenterframe = function() { if( this.intersect( cursor ) ){ des_step1.cnt++; if(des_step1.cnt >= 20){ ui_group.addChild(des_step1); } if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す des_step1.cnt = 0; ui_group.removeChild(des_step1); if(mode_flg == 1 && type_flg ==2){ this.frame = 2; }else { this.frame = 0; } } } } step2.ontouchstart = function() { LOG_step2(); step1.frame = 0; this.frame = 2; step3.frame = 0; mode_flg = 1; type_flg = 1; drawer.se_cnt1 = 0; if(se_flg == 3) { se_flg = 2; se_buni.frame = 2; } ui_group.removeChild(speed_group); ui_group.addChild(radius_group); se_group.removeChild(se_mokyu); se_group.addChild(se_buni); } step2.onenterframe = function() { if( this.intersect( cursor ) ){ des_step2.cnt++; if(des_step2.cnt >= 20){ ui_group.addChild(des_step2); } if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す des_step2.cnt = 0; ui_group.removeChild(des_step2); if(mode_flg == 1 && type_flg ==1){ this.frame = 2; }else { this.frame = 0; } } } } step3.ontouchstart = function() { LOG_step3(); step1.frame = 0; step2.frame = 0; this.frame = 2; mode_flg = 2; type_flg = 1; if(se_flg == 2) { se_flg = 3; se_mokyu.frame = 2; } ui_group.removeChild(radius_group); ui_group.addChild(speed_group); se_group.removeChild(se_buni); se_group.addChild(se_mokyu); } step3.onenterframe = function() { if( this.intersect( cursor ) ){ des_step3.cnt++; if(des_step3.cnt >= 20){ ui_group.addChild(des_step3); } if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す des_step3.cnt = 0; ui_group.removeChild(des_step3); if(mode_flg == 2){ this.frame = 2; }else { this.frame = 0; } } } } // 透明度 var alpha_bg = new Sprite(360, 100); alpha_bg.image = game.assets[ALPHA_BG]; var alpha_meter = new Sprite(1, 17); alpha_meter.image = game.assets[BAR_METER]; alpha_meter.moveTo(116+(21*alpha_min), 41); alpha_meter.width = (116+21*alpha_max) - (116+21*alpha_min); var alpha_r = new Sprite(20, 24); alpha_r.image = game.assets[BAR_R]; alpha_r.moveTo(116+(21*alpha_max), 40); var alpha_l = new Sprite(20, 24); alpha_l.image = game.assets[BAR_L]; alpha_l.moveTo(116+(21*alpha_min)-alpha_l.width, 40); var alpha_hukidasi_r = new Sprite(33, 34); alpha_hukidasi_r.image = game.assets[BAR_HUKIDASI_R]; alpha_hukidasi_r.moveTo(alpha_r.x, 5); var alpha_hukidasi_l = new Sprite(33, 34); alpha_hukidasi_l.image = game.assets[BAR_HUKIDASI_L]; alpha_hukidasi_l.moveTo(alpha_l.x+(alpha_l.width-alpha_hukidasi_l.width), 5); var alpha_value_r = new Label(); alpha_value_r.color = 'rgba(255, 255, 255, 1)'; alpha_value_r.font = "12px 'Meiryo UI', 'Meiryo' "; alpha_value_r.text = alpha_max/10; alpha_value_r.moveTo(alpha_hukidasi_r.x+alpha_hukidasi_r.width/2-alpha_value_r._boundWidth/2+1, 11); var alpha_value_l = new Label(); alpha_value_l.color = 'rgba(255, 255, 255, 1)'; alpha_value_l.font = "12px 'Meiryo UI', 'Meiryo' "; alpha_value_l.text = alpha_min/10; alpha_value_l.moveTo(alpha_hukidasi_l.x+alpha_hukidasi_l.width/2-alpha_value_l._boundWidth/2+1, 11); var alpha_group = new Group(); alpha_group.addChild(alpha_bg); alpha_group.addChild(alpha_meter); alpha_group.addChild(alpha_r); alpha_group.addChild(alpha_l); alpha_group.addChild(alpha_hukidasi_r); alpha_group.addChild(alpha_hukidasi_l); alpha_group.addChild(alpha_value_r); alpha_group.addChild(alpha_value_l); alpha_group.moveTo(0,199); alpha_r.ontouchstart = function(e) { LOG_alphamax(); this.pre_x = e.x; this.posmax = 326; this.posmin = alpha_l.x+alpha_l.width; } alpha_r.ontouchmove = function(e) { this.moveBy(e.x-this.pre_x, 0); if(this.x > this.posmax){ this.x = this.posmax; } if(this.x < this.posmin){ this.x = this.posmin; } // alpha_max値の更新とふきだしの数値表示 alpha_max = (this.x-116)/21; alpha_max *= 10; alpha_value_r.text = Math.floor(alpha_max)/100; alpha_max /= 10; // ふきだしと数値の移動 alpha_hukidasi_r.moveTo(alpha_r.x, 5); alpha_value_r.moveTo(alpha_hukidasi_r.x+alpha_hukidasi_r.width/2-alpha_value_r._boundWidth/2+1, 11); // 値更新 this.pre_x = e.x; // メーター更新 alpha_meter.moveTo(116+(21*alpha_min), 41); alpha_meter.width = (116+21*alpha_max) - (116+21*alpha_min); } alpha_l.ontouchstart = function(e) { LOG_alphamin(); this.pre_x = e.x; this.posmax = alpha_r.x-alpha_l.width; this.posmin = 116+21-this.width; } alpha_l.ontouchmove = function(e) { this.moveBy(e.x-this.pre_x, 0); if(this.x > this.posmax){ this.x = this.posmax; } if(this.x < this.posmin){ this.x = this.posmin; } // alpha_min値の更新とふきだしの数値表示 alpha_min = (this.x+this.width-116)/21; alpha_min *= 10; alpha_value_l.text = Math.floor(alpha_min)/100; alpha_min /= 10; // ふきだしと数値の移動 alpha_hukidasi_l.moveTo(alpha_l.x+(alpha_l.width-alpha_hukidasi_l.width), 5); alpha_value_l.moveTo(alpha_hukidasi_l.x+alpha_hukidasi_l.width/2-alpha_value_l._boundWidth/2+1, 11); // 値更新 this.pre_x = e.x; // メーター更新 alpha_meter.moveTo(116+(21*alpha_min), 41); alpha_meter.width = (116+21*alpha_max) - (116+21*alpha_min); } // 大きさ var radius_bg = new Sprite(360, 100); radius_bg.image = game.assets[RADIUS_BG]; var radius_meter = new Sprite(1, 17); radius_meter.image = game.assets[BAR_METER]; radius_meter.moveTo(116+(goal_min), 41); radius_meter.width = (116+goal_max) - (116+goal_min); var radius_r = new Sprite(20, 24); radius_r.image = game.assets[BAR_R]; radius_r.moveTo(116+(goal_max), 40); var radius_l = new Sprite(20, 24); radius_l.image = game.assets[BAR_L]; radius_l.moveTo(116+(goal_min)-radius_l.width, 40); var radius_hukidasi_r = new Sprite(33, 34); radius_hukidasi_r.image = game.assets[BAR_HUKIDASI_R]; radius_hukidasi_r.moveTo(radius_r.x, 5); var radius_hukidasi_l = new Sprite(33, 34); radius_hukidasi_l.image = game.assets[BAR_HUKIDASI_L]; radius_hukidasi_l.moveTo(radius_l.x+(radius_l.width-radius_hukidasi_l.width), 5); var radius_value_r = new Label(); radius_value_r.color = 'rgba(255, 255, 255, 1)'; radius_value_r.font = "12px 'Meiryo UI', 'Meiryo' "; radius_value_r.text = goal_max; radius_value_r.moveTo(radius_hukidasi_r.x+radius_hukidasi_r.width/2-radius_value_r._boundWidth/2+1, 11); var radius_value_l = new Label(); radius_value_l.color = 'rgba(255, 255, 255, 1)'; radius_value_l.font = "12px 'Meiryo UI', 'Meiryo' "; radius_value_l.text = goal_min; radius_value_l.moveTo(radius_hukidasi_l.x+radius_hukidasi_l.width/2-radius_value_l._boundWidth/2+1, 11); var radius_group = new Group(); radius_group.addChild(radius_bg); radius_group.addChild(radius_meter); radius_group.addChild(radius_r); radius_group.addChild(radius_l); radius_group.addChild(radius_hukidasi_r); radius_group.addChild(radius_hukidasi_l); radius_group.addChild(radius_value_r); radius_group.addChild(radius_value_l); radius_group.moveTo(0,298); radius_r.ontouchstart = function(e) { LOG_radiusmax(); this.pre_x = e.x; this.posmax = 326; this.posmin = radius_l.x+radius_l.width; } radius_r.ontouchmove = function(e) { this.moveBy(e.x-this.pre_x, 0); if(this.x > this.posmax){ this.x = this.posmax; } if(this.x < this.posmin){ this.x = this.posmin; } // goal_max値の更新とふきだしの数値表示 goal_max = this.x-116; radius_value_r.text = goal_max; // ふきだしと数値の移動 radius_hukidasi_r.moveTo(radius_r.x, 5); radius_value_r.moveTo(radius_hukidasi_r.x+radius_hukidasi_r.width/2-radius_value_r._boundWidth/2+1, 11); // 値更新 this.pre_x = e.x; // メーター更新 radius_meter.moveTo(116+(goal_min), 41); radius_meter.width = (116+goal_max) - (116+goal_min); } radius_l.ontouchstart = function(e) { LOG_radiusmin(); this.pre_x = e.x; this.posmax = radius_r.x-radius_l.width; this.posmin = 116+1-this.width; } radius_l.ontouchmove = function(e) { this.moveBy(e.x-this.pre_x, 0); if(this.x > this.posmax){ this.x = this.posmax; } if(this.x < this.posmin){ this.x = this.posmin; } // goal_min値の更新とふきだしの数値表示 goal_min = this.x+this.width-116; radius_value_l.text = goal_min; // ふきだしと数値の移動 radius_hukidasi_l.moveTo(radius_l.x+(radius_l.width-radius_hukidasi_l.width), 5); radius_value_l.moveTo(radius_hukidasi_l.x+radius_hukidasi_l.width/2-radius_value_l._boundWidth/2+1, 11); // 値更新 this.pre_x = e.x; // メーター更新 radius_meter.moveTo(116+(goal_min), 41); radius_meter.width = (116+goal_max) - (116+goal_min); } // スピード var speed_bg = new Sprite(360, 100); speed_bg.image = game.assets[SPEED_BG]; var speed_meter = new Sprite(1, 17); speed_meter.image = game.assets[BAR_METER]; speed_meter.moveTo(116, 41); speed_meter.width = 21*speed; var speed_meter_l = new Sprite(15,17); speed_meter_l.image = game.assets[BAR_METER_L]; speed_meter_l.moveTo(101, 41); var speed_bar = new Sprite(20, 24); speed_bar.image = game.assets[BAR_R]; speed_bar.moveTo(116+(21*speed)-speed_bar.width/2, 40); var speed_hukidasi = new Sprite(33, 34); speed_hukidasi.image = game.assets[BAR_HUKIDASI]; speed_hukidasi.moveTo(116+(21*speed)-speed_hukidasi.width/2, 5); var speed_value = new Label(); speed_value.color = 'rgba(255, 255, 255, 1)'; speed_value.font = "12px 'Meiryo UI', 'Meiryo' "; speed_value.text = speed; speed_value.moveTo(116+(21*speed)-speed_value._boundWidth/2+1, 11); var speed_group = new Group(); speed_group.addChild(speed_bg); speed_group.addChild(speed_meter); speed_group.addChild(speed_meter_l); speed_group.addChild(speed_bar); speed_group.addChild(speed_hukidasi); speed_group.addChild(speed_value); speed_group.moveTo(0,298); speed_bar.ontouchstart = function(e) { LOG_speed(); this.pre_x = e.x; this.posmax = 326-this.width/2; this.posmin = 116+3-this.width/2; } speed_bar.ontouchmove = function(e) { this.moveBy(e.x-this.pre_x, 0); if(this.x > this.posmax){ this.x = this.posmax; } if(this.x < this.posmin){ this.x = this.posmin; } // speed値の更新とふきだしの数値表示 speed = (this.x+this.width/2-116)/21; speed *= 10; speed_value.text = Math.floor(speed)/10; speed /= 10; // ふきだしと数値の移動 speed_hukidasi.moveTo(116+(21*speed)-speed_hukidasi.width/2, 5); speed_value.moveTo(116+(21*speed)-speed_value._boundWidth/2+1, 11); // 値更新 this.pre_x = e.x; // メーター更新 speed_meter.width = 21*speed; } // 音(SE) var se_bg = new Sprite(220, 200); se_bg.image = game.assets[SE_BG]; var se_none = new Sprite(113, 43); se_none.image = game.assets[SE_NONE]; se_none.frame = 0; se_none.moveTo(91, 25); se_none.onMouse = false; var se_doremi = new Sprite(113, 43); se_doremi.image = game.assets[SE_DOREMI]; se_doremi.frame = 2; se_doremi.moveTo(91, 78); se_doremi.onMouse = false; var se_buni = new Sprite(113, 43); se_buni.image = game.assets[SE_BUNI]; se_buni.frame = 0; se_buni.moveTo(91, 131); se_buni.onMouse = false; var se_mokyu = new Sprite(113, 43); se_mokyu.image = game.assets[SE_MOKYU]; se_mokyu.frame = 0; se_mokyu.moveTo(91, 131); se_mokyu.onMouse = false; var se_group = new Group(); se_group.addChild(se_bg); se_group.addChild(se_none); se_group.addChild(se_doremi); se_group.addChild(se_buni); //se_group.addChild(se_mokyu); se_group.moveTo(359, 0); se_none.ontouchstart = function() { LOG_senone(); this.frame = 2; se_doremi.frame = 0; se_buni.frame = 0; se_mokyu.frame = 0; se_flg = 0; } se_none.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す if(se_flg == 0){ this.frame = 2; }else { this.frame = 0; } } } } se_doremi.ontouchstart = function() { LOG_sedoremi(); this.frame = 2; se_none.frame = 0; se_buni.frame = 0; se_mokyu.frame = 0; se_flg = 1; drawer.se_cnt1 = 0; } se_doremi.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す if(se_flg == 1){ this.frame = 2; }else { this.frame = 0; } } } } se_buni.ontouchstart = function() { LOG_sebuni(); this.frame = 2; se_doremi.frame = 0; se_none.frame = 0; se_mokyu.frame = 0; se_flg = 2; } se_buni.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す if(se_flg == 2){ this.frame = 2; }else { this.frame = 0; } } } } se_mokyu.ontouchstart = function() { LOG_semokyu(); this.frame = 2; se_doremi.frame = 0; se_none.frame = 0; se_buni.frame = 0; se_flg = 3; } se_mokyu.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す if(se_flg == 3){ this.frame = 2; }else { this.frame = 0; } } } } // 背景 var back_bg = new Sprite(220, 199); back_bg.image = game.assets[BACK_BG]; var back_clear = new Sprite(113, 43); back_clear.image = game.assets[BACK_CLEAR]; back_clear.frame = 2; back_clear.moveTo(91, 25); back_clear.onMouse = false; var back_white = new Sprite(113, 43); back_white.image = game.assets[BACK_WHITE]; back_white.frame = 0; back_white.moveTo(91, 78); back_white.onMouse = false; var back_black = new Sprite(113, 43); back_black.image = game.assets[BACK_BLACK]; back_black.frame = 0; back_black.moveTo(91, 131); back_black.onMouse = false; var back_group = new Group(); back_group.addChild(back_bg); back_group.addChild(back_clear); back_group.addChild(back_white); back_group.addChild(back_black); back_group.moveTo(359, 199); back_clear.ontouchstart = function() { LOG_bcclear(); this.frame = 2; back_white.frame = 0; back_black.frame = 0; back_flg = 0; drawer.backChange(); } back_clear.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す if(back_flg == 0){ this.frame = 2; }else { this.frame = 0; } } } } back_white.ontouchstart = function() { LOG_bcwhite(); this.frame = 2; back_clear.frame = 0; back_black.frame = 0; back_flg = 1; drawer.backChange(); } back_white.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す if(back_flg == 1){ this.frame = 2; }else { this.frame = 0; } } } } back_black.ontouchstart = function() { LOG_bcblack(); this.frame = 2; back_white.frame = 0; back_clear.frame = 0; back_flg = 2; drawer.backChange(); } back_black.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す if(back_flg == 2){ this.frame = 2; }else { this.frame = 0; } } } } // リセット、保存、閉じる ボタン var button_bg = new Sprite(380, 53); button_bg.image = game.assets[BUTTON_BG]; var button_reset = new Sprite(113, 43); button_reset.image = game.assets[BUTTON_RESET]; button_reset.frame = 1; button_reset.moveTo(10, 5); button_reset.onMouse = false; var button_save = new Sprite(113, 43); button_save.image = game.assets[BUTTON_SAVE]; button_save.frame = 1; button_save.moveTo(133, 5); button_save.onMouse = false; var button_close = new Sprite(113, 43); button_close.image = game.assets[BUTTON_CLOSE]; button_close.frame = 1; button_close.moveTo(256, 5); button_close.onMouse = false; var button_group = new Group(); button_group.addChild(button_bg); button_group.addChild(button_reset); button_group.addChild(button_save); button_group.addChild(button_close); button_group.moveTo(578, 0); button_reset.ontouchstart = function() { LOG_reset(); this.frame = 2; // 背景もリセット back_clear.frame = 2; back_white.frame = 0; back_black.frame = 0; back_flg = 0; // リセットメソッド実行 drawer.reset(); } /* button_reset.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す this.frame = 0; } } } */ button_reset.ontouchend = function() { this.frame = 1; } button_save.ontouchstart = function() { LOG_save(); //this.frame = 2; window.open(drawer.surface.toDataURL(), null); } /* button_save.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す this.frame = 0; } } } */ button_save.ontouchend = function() { //this.frame = 1; } button_close.ontouchstart = function() { LOG_setclose(); this.frame = 2; if(SCREEN_W < 960){ ui_group.tl.moveTo(0, -600, 15, enchant.Easing.QUINT_EASEOUT); }else { ui_group.tl.moveTo(0, -400, 15, enchant.Easing.QUINT_EASEOUT); } setting_flg = 0; } /* button_close.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す this.frame = 0; } } } */ button_close.ontouchend = function() { this.frame = 1; } // 色 var color_bg = new Sprite(380, 346); color_bg.image = game.assets[COLOR_BG]; var color_random = new Sprite(122, 123); color_random.image = game.assets[COLOR_RANDOM]; color_random.frame = 2; color_random.moveTo(166.5, 112); color_random.onMouse = false; // 色ボタン配置用の変数 var center_x = color_random.x + 61; // ランダム色ボタンの中心点 var center_y = color_random.y + 61; // ランダム色ボタンの中心点 var angle60 = Math.PI / 3; // 60度 var color01 = new Sprite(96, 96); color01.image = game.assets[COLOR01]; color01.frame = 1; color01.moveTo(center_x-106*Math.cos(angle60)-48, center_y-106*Math.sin(angle60)-48); color01.onMouse = false; var color02 = new Sprite(96, 96); color02.image = game.assets[COLOR02]; color02.frame = 1; color02.moveTo(center_x+106*Math.cos(angle60)-48, center_y-106*Math.sin(angle60)-48); color02.onMouse = false; var color03 = new Sprite(96, 96); color03.image = game.assets[COLOR03]; color03.frame = 1; color03.moveTo(center_x+106*Math.cos(angle60*0)-48, center_y+106*Math.sin(angle60*3)-48); color03.onMouse = false; var color04 = new Sprite(96, 96); color04.image = game.assets[COLOR04]; color04.frame = 1; color04.moveTo(center_x+106*Math.cos(angle60)-48, center_y+106*Math.sin(angle60)-48); color04.onMouse = false; var color05 = new Sprite(96, 96); color05.image = game.assets[COLOR05]; color05.frame = 1; color05.moveTo(center_x-106*Math.cos(angle60)-48, center_y+106*Math.sin(angle60)-48); color05.onMouse = false; var color06 = new Sprite(96, 96); color06.image = game.assets[COLOR06]; color06.frame = 1; color06.moveTo(center_x-106*Math.cos(angle60*0)-48, center_y-106*Math.sin(angle60*3)-48); color06.onMouse = false; var color_group = new Group(); color_group.addChild(color_bg); color_group.addChild(color_random); color_group.addChild(color01); color_group.addChild(color02); color_group.addChild(color03); color_group.addChild(color04); color_group.addChild(color05); color_group.addChild(color06); color_group.moveTo(578, 52); color_random.ontouchstart = function() { switch(this.frame){ case 0: this.frame = 2; color_flg = 1; LOG_clrrandon(); break; case 2: this.frame = 0; color_flg = 0; LOG_clrrandoff(); break; default: break; } } /* color_random.onenterframe = function() { if( this.intersect( cursor ) ){ if(! this.onMouse){ this.onMouse = true; // オンマウス画像にする if(this.frame != 2){ this.frame = 1; } } } else { if(this.onMouse){ this.onMouse = false; // 画像を戻す this.frame = 0; } } } */ color01.ontouchstart = function() { switch(this.frame){ case 0: this.frame = 1; color_box[color_box.length] = "color01"; LOG_mizuon(); break; case 1: this.frame = 0; for(var i = 0, n = color_box.length; n > i; i++){ if(color_box[i] == 'color01'){ color_box.splice(i, 1); } } LOG_mizuoff(); break; default: break; } } color02.ontouchstart = function() { switch(this.frame){ case 0: this.frame = 1; color_box[color_box.length] = "color02"; LOG_blueon(); break; case 1: this.frame = 0; for(var i = 0, n = color_box.length; n > i; i++){ if(color_box[i] == 'color02'){ color_box.splice(i, 1); } } LOG_blueoff(); break; default: break; } } color03.ontouchstart = function() { switch(this.frame){ case 0: this.frame = 1; color_box[color_box.length] = "color03"; LOG_pinkon(); break; case 1: this.frame = 0; for(var i = 0, n = color_box.length; n > i; i++){ if(color_box[i] == 'color03'){ color_box.splice(i, 1); } } LOG_pinkoff(); break; default: break; } } color04.ontouchstart = function() { switch(this.frame){ case 0: this.frame = 1; color_box[color_box.length] = "color04"; LOG_redon(); break; case 1: this.frame = 0; for(var i = 0, n = color_box.length; n > i; i++){ if(color_box[i] == 'color04'){ color_box.splice(i, 1); } } LOG_redoff(); break; default: break; } } color05.ontouchstart = function() { switch(this.frame){ case 0: this.frame = 1; color_box[color_box.length] = "color05"; LOG_yellowon(); break; case 1: this.frame = 0; for(var i = 0, n = color_box.length; n > i; i++){ if(color_box[i] == 'color05'){ color_box.splice(i, 1); } } LOG_yellowoff(); break; default: break; } } color06.ontouchstart = function() { switch(this.frame){ case 0: this.frame = 1; color_box[color_box.length] = "color06"; LOG_greenon(); break; case 1: this.frame = 0; for(var i = 0, n = color_box.length; n > i; i++){ if(color_box[i] == 'color06'){ color_box.splice(i, 1); } } LOG_greenoff(); break; default: break; } } // UIグループ var ui_group = new Group(); ui_group.addChild(step_group); ui_group.addChild(alpha_group); ui_group.addChild(radius_group); //ui_group.addChild(speed_group); ui_group.addChild(se_group); ui_group.addChild(back_group); ui_group.addChild(button_group); ui_group.addChild(color_group); ui_group.addChild(cursor); ui_group.moveTo(0, -400); scene_root.addChild(ui_group); /* ui_group.ontouchstart = function(e) { console.log("x座標: "+e.x+" y座標: "+e.y); } */ // 画面サイズが960×400よりも小さいときの処理 if(SCREEN_W < 960){ se_group.moveTo(0, 397); back_group.moveTo(219, 397); button_group.moveTo(359, 0); color_group.moveTo(359, 52); ui_group.moveTo(0, -600); } // ホバー用処理 ui_group.onenterframe = function() { window.document.onmousemove = function(e){ cursor.moveTo( getMousePosition(e).x, getMousePosition(e).y ); } } // マウス座標取得関数 function getMousePosition(e) { var obj = new Object(); if(e) { obj.x = e.clientX; obj.y = e.clientY; } else { obj.x = event.x + document.body.scrollLeft; obj.y = event.y + document.body.scrollTop; } return obj; } }; game.start(); } /**************************************************************/ /*************************** クラス ****************************/ // 描画クラス var Drawer = Class.create(Sprite, { // 初期化処理 initialize: function() { Sprite.call(this, SCREEN_W, SCREEN_H); this.surface = new Surface(SCREEN_W, SCREEN_H); this.image = this.surface; // コンテキストを取得 this.context = this.surface.context; // 背景を塗りつぶす(初期色:透明) this.context.fillStyle = 'rgba(255, 255, 255, 0)'; this.context.fillRect(0, 0, SCREEN_W, SCREEN_H); // 円データ配列 this.circle = new Array(); this.cnt = 0; // 円の数カウンタ // se用カウンタ this.se_cnt1 = 0; // stamp用 (spreadでも使う) this.se_cnt2 = 0; // spread用 //描画の更新フラグ this.update_flg = 0; // 0:更新なし 1:更新あり }, // 円データ追加(stamp) stamp: function(x_pos, y_pos){ var radius, alpha, goal, flg, mode; radius = 0; /* r = randfloat(0, 255)|0; g = randfloat(0, 255)|0; b = randfloat(0, 255)|0; */ if(color_box.length == 0){ switch(back_flg){ case 0: r = g = b = 0; break; case 1: r = g = b = 0; break; case 2: r = g = b = 255; break; default: r = g = b = 0; break; } }else { var key = randfloat(0, color_box.length)|0; switch(color_box[key]){ case 'color01': setColor01(); break; case 'color02': setColor02(); break; case 'color03': setColor03(); break; case 'color04': setColor04(); break; case 'color05': setColor05(); break; case 'color06': setColor06(); break; default: r = g = b = 0; break; } } //console.log("r, g, b: "+r+", "+g+", "+b) /* for(var i = 0, n = color_box.length; n > i; i++){ console.log("color_box["+i+"]: "+color_box[i]); } */ alpha = randfloat(alpha_min,alpha_max)|0; alpha /=10; goal = randfloat(goal_min,goal_max)|0; // 最終的な円の半径 flg = 1; mode = 'stamp'; this.circle[this.cnt] = new circle(x_pos, y_pos, radius, r, g, b, alpha, goal, flg, mode); LOG_stamp(); this.cnt++; this.update_flg = 1; // SE再生 switch(se_flg){ case 0: break; case 1: this.se1[this.se_cnt1%8].clone().play(); this.se_cnt1++; break; case 2: this.se2.clone().play(); default: break; } }, // 円データ追加(spread) spread: function(x_pos, y_pos){ var radius, alpha, flg, mode; radius = 0; /* r = randfloat(r_min,r_max)|0; g = randfloat(g_min,r_max)|0; b = randfloat(b_min,b_max)|0; */ if(color_box.length == 0){ switch(back_flg){ case 0: r = g = b = 0; break; case 1: r = g = b = 0; break; case 2: r = g = b = 255; break; default: r = g = b = 0; break; } }else { var key = randfloat(0, color_box.length)|0; switch(color_box[key]){ case 'color01': setColor01(); break; case 'color02': setColor02(); break; case 'color03': setColor03(); break; case 'color04': setColor04(); break; case 'color05': setColor05(); break; case 'color06': setColor06(); break; default: r = g = b = 0; break; } } alpha = randfloat(alpha_min,alpha_max)|0; alpha /=10; flg = 1; mode = 'spread'; this.circle[this.cnt] = new circle(x_pos, y_pos, radius, r, g, b, alpha, speed, flg, mode); LOG_stamp(); this.cnt++; // SE用のカウンタ初期化 this.se_cnt1 = 0; this.se_cnt2 = 0; this.update_flg = 1; }, // 円データ更新 update: function(){ var check = 0; for(var i = 0, n = this.circle.length; n > i; i++){ // 円データの更新 if(this.circle[i].flg == 1){ // (1:更新あり) 更新ありの円のみ値更新 // 円データの更新があればcheckをつける check = 1; // モードごとに円データ更新 if(this.circle[i].mode == 'stamp'){ // stampの円の場合 this.circle[i].radius += (this.circle[i].update - this.circle[i].radius) * (1.0 - Math.exp(-6.0 * fps/delay)); this.circle[i].timer--; if(this.circle[i].timer == 0){ this.circle[i].flg = 0; } }else if(this.circle[i].mode =='spread'){ // spreadの場合 // SE再生 switch(se_flg){ case 0: break; case 1: this.se_cnt2++; if(this.se_cnt2 >= 30/speed){ this.se1[this.se_cnt1%8].clone().play(); this.se_cnt1++; this.se_cnt2 = 0; } break; case 3: this.se_cnt2++; if(this.se_cnt2 >= 30/speed){ this.se3.clone().play(); this.se_cnt2 = 0; } break; default: break; } this.circle[i].radius += this.circle[i].update; } } } // 描画更新フラグ判定 if(check == 0) { this.update_flg = 0; }else { this.update_flg = 1; } }, // フレーム毎の処理(円データを元に円を描画 更新データがなければ何もしない) onenterframe: function(){ // 更新がある if(this.update_flg == 1){ //console.log(this.circle[this.cnt-1].radius+" "+this.circle[this.cnt-1].timer); // クリア this.context.clearRect(0, 0, SCREEN_W, SCREEN_H); // 背景色を描写 switch(back_flg){ case 0: this.context.fillStyle = 'rgba(0, 0, 0, 0)'; break; case 1: this.context.fillStyle = 'rgba(255, 255, 255, 1)'; break; case 2: this.context.fillStyle = 'rgba(0, 0, 0, 1)'; break; default: this.context.fillStyle = 'rgba(255, 255, 255, 0)'; break; } this.context.fillRect(0, 0, SCREEN_W, SCREEN_H); // 円を描写 for(var i = 0, n = this.circle.length; n > i; i++){ // パスのリセット this.context.beginPath(); // 円の描写 this.context.arc(this.circle[i].x_pos, this.circle[i].y_pos, this.circle[i].radius, 0, 2*Math.PI, true); // 円の内部の色を指定し描写 this.context.fillStyle = 'rgba('+this.circle[i].r+','+this.circle[i].g+','+this.circle[i].b+','+this.circle[i].alpha+')'; this.context.fill(); } // 円データの更新 this.update(); } }, // タッチ開始時処理 /* ontouchstart: function(e) { // モードとタイプに合わせて円データを追加 switch(mode_flg){ case 1: if(type_flg == 1){ this.stamp(e.x, e.y); }else if(type_flg == 2){ this.stamp( randfloat(0,SCREEN_W)|0, randfloat(0,SCREEN_H)|0); } break; case 2: this.spread(e.x, e.y); break; default: alert("エラー発生。プログラムを再起動してください。"); break; } },*/ // タッチ終了処理 ontouchend: function(){ if(mode_flg == 2){ //this.circle[this.cnt-1].flg = 0; // 処理重いver きちんと全てのflgを0にするならこっち for(var i = 0, n = this.circle.length; n > i; i++){ if(this.circle[i].mode == 'spread'){ this.circle[i].flg = 0; } } } }, onabuttonup: function(){ //2014-12-07追加 if(mode_flg == 2){ //this.circle[this.cnt-1].flg = 0; // 処理重いver きちんと全てのflgを0にするならこっち for(var i = 0, n = this.circle.length; n > i; i++){ if(this.circle[i].mode == 'spread'){ this.circle[i].flg = 0; } } } }, // 背景色の変更 backChange: function(){ // クリア this.context.clearRect(0, 0, SCREEN_W, SCREEN_H); // パスのリセット this.context.beginPath(); // 背景色を指定 switch(back_flg){ case 0: this.context.fillStyle = 'rgba(0, 0, 0, 0)'; break; case 1: this.context.fillStyle = 'rgba(255, 255, 255, 1)'; break; case 2: this.context.fillStyle = 'rgba(0, 0, 0, 1)'; break; default: this.context.fillStyle = 'rgba(255, 255, 255, 1)'; break; } // 塗りつぶし this.context.fillRect(0, 0, SCREEN_W, SCREEN_H); // もともとあった円を描写 for(var i = 0, n = this.circle.length; n > i; i++){ this.context.beginPath(); this.context.arc(this.circle[i].x_pos, this.circle[i].y_pos, this.circle[i].radius, 0, 2*Math.PI, true); this.context.fillStyle = 'rgba('+this.circle[i].r+','+this.circle[i].g+','+this.circle[i].b+','+this.circle[i].alpha+')'; this.context.fill(); } }, reset: function(){ //console.log("リセット前 "+this.circle.length); this.context.clearRect(0, 0, SCREEN_W, SCREEN_H); // 円データ配列リセット this.circle = []; this.cnt = 0; // 円の数カウンタリセット // se用カウンタリセット this.se_cnt1 = 0; // stamp用 (spreadでも使う) this.se_cnt2 = 0; // spread用 //描画の更新フラグリセット this.update_flg = 0; // 0:更新なし 1:更新あり //console.log("リセット後 "+this.circle.length); }, }); // 円クラス(円データ構造体) function circle(x_pos, y_pos, radius, r, g, b, alpha, update, flg, mode){ //コンストラクタ(もどき) this.x_pos = x_pos; // x座標 this.y_pos = y_pos; // y座標 this.radius = radius; // 半径 this.r = r; // red値 this.g = g; // green値 this.b = b; // bule値 this.alpha = alpha; // 透過度 this.update = update; // 更新値 this.flg = flg; // データの更新フラグ(0:データ更新なし 1:データ更新あり) this.mode = mode; // mode(stamp or spread) char型 this.timer = delay*3/100; // stampのみ使用 timer=0で更新終了 } /*************************************************************/