無数の色パネル
無数の色パネル | ひまあそび-ミニゲーム hi0a.com
view source
JavaScript
document.title = '無数の色パネル';
let { canvas, ctx, cx, cy, w, h, min, demo } = readyCanvas();
var style = document.createElement('style');
style.innerText = 'html,body{overflow:hidden;cursor:none;user-select:none;}';
document.getElementsByTagName('head').item(0).appendChild(style);
var hue = 90;
let styleImg = document.createElement('style');
styleImg.innerText = '#demo img{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100vh;opacity:1;cursor:none;}';
document.getElementsByTagName('head').item(0).appendChild(styleImg);
let img = document.createElement('img');
demo.appendChild(img);
img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D';
let search = location.search.slice(1);
let params = new URLSearchParams(search);
let q = params.get('q');
if(q){
img.src = q;
}
var t = 0;
var imax = 128;
function draw() {
w = canvas.width;
h = canvas.height;
ctx.clearRect(0, 0, w, h);
var iw = w/imax;
var ih = h/imax;
for(i=0;i<imax;i++){
for(j=0;j<imax;j++){
var ch = Math.floor(Math.random()*360);
//var r = Math.floor(Math.random()*128)+128;
//var g = Math.floor(Math.random()*128)+128;
//var b = Math.floor(Math.random()*128)+128;
var color = 'hsl('+ch+',100%,50%)';
//var color = 'rgb('+r+','+g+','+b+')';
ctx.fillStyle = color;
ctx.fillRect(i*iw, j*ih, iw, ih);
}
}
}
draw();
setInterval(function(){
draw();
},9);
// ファイルアップロード
var dragArea = document.getElementById('demo');
dragArea.classList.add('ready');
dragArea.addEventListener('dragstart', function(event){
event.dataTranfer.addElement(container);
});
dragArea.addEventListener('dragover', function(event){
event.preventDefault();
this.classList.add('drag');
});
dragArea.addEventListener('dragleave', function(event){
event.preventDefault();
this.classList.remove('drag');
});
dragArea.addEventListener('drop', function(event){
event.preventDefault();
this.classList.remove('drag');
console.log(event.dataTransfer.files);
if(!event.dataTransfer.files.length){
return;
}
var file = event.dataTransfer.files[0];
fileName = file.name.substring(0,12).split('.')[0] || 'name';
console.log(file);
var reader = new FileReader();
reader.readAsDataURL(file)
reader.addEventListener('load', function(){
var dataURL = reader.result;
console.log(dataURL);
var newImage = new Image();
img.src = dataURL;
newImage.src = dataURL;
newImage.onload = function(){
}
});
});
let opacity = 1;
img.addEventListener('click', function(ev) {
opacity -= 0.2;
if(opacity < 0.4){
opacity = 1;
}
img.style.opacity = opacity;
}, false );
document.oncontextmenu = function () {return false;}
CSS
HTML
ページのソースを表示 : Ctrl+U , DevTools : F12
view-source:https://hi0a.com/game/canvas-color-noize/
ABOUT
hi0a.com 「ひまあそび」は無料で遊べるミニゲームや便利ツールを公開しています。
プログラミング言語の動作デモやWEBデザイン、ソースコード、フロントエンド等の開発者のための技術を公開しています。
必要な機能の関数をコピペ利用したり勉強に活用できます。
プログラムの動作サンプル結果は画面上部に出力表示されています。
環境:最新のブラウザ GoogleChrome / Windows / Android / iPhone 等の端末で動作確認しています。
画像素材や音素材は半分自作でフリー素材配布サイトも利用しています。LINK参照。
仕様変更、API廃止等、実験途中で動かないページもあります。