「JavaScript」カテゴリーアーカイブ

ブラウザにデータを保存できるwebstorageのサンプル

ここのサンプルを少し改造しています.

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset=utf-8>
<script>
//変数storageにlocalStorageを格納
var myData = localStorage;//たぶん”localstorage”というのは変えてはいけない

//myDataに保存する
function dataSave() {
  var myKey = document.getElementById("mykey").value;
  var myValue = document.getElementById("myvalue").value;
  myData.setItem(myKey, myValue);
  show_result();
}

//データを消去
function myclear() {
  myData.clear();
 show_result();
}

//保存されているデータをリスト表示する
function show_result() {
 var result = "";
  //保存されているデータの数だけループ
  for(var i=0; i<myData.length; i++){
    //i番目のキーを取得
  //  var k = myData.key(i);
    var calledData = myData.key(i);

    result += calledData + "は" + myData.getItem(calledData) + "です<br>";
  }
  //上のループで作成されたテキストを表示する
  document.getElementById("show_result").innerHTML = result;
}


  // 
  function removeStorage() {
    var key = document.getElementById("sakujoKey").value;
    myData.removeItem(key);
    key = "";
    show_result();
  }

</script>
<title>Web Storage サンプル</title>
</head>
<body onload="show_result();"><!-- ←ここで結果を自動表示させている-->
<p>
キー:<input id="mykey" type="text">
値:<input id="myvalue" type="text">
<input type="button" value="ストレージに保存" onClick="dataSave()">
</p>
<p>
<div id="show_result"></div>
<input type="button" value="ストレージをクリア" onClick="myclear()">

<input type="button" value="リスト表示" onClick="show_result()">
<br />
削除するキー:<input id="sakujoKey" type="text">
  <button id="button" onclick="removeStorage()">このキーを削除</button>
</p>
</body>
</html>

このデータは共有できるので,同じサーバ(で判別している)であれば別のページからでもこのデータをみられる.

そこで,書き込み用ページと,読み出しようページを分けて,普段は読み出し用ページ,特別な時に書き込みようページへ移動してデータを追加というのも可能です.

データはクリア以外にも,キーワードを指定して削除という方法があります.

「削除するキー」の横に削除したいキーワードを入れて,削除ボタンを押すと,そのキーと値が削除されます.

なお,同じキーの場合は,上書きされますので,日付などで固有化させてください.

例えば,「2014年11月電気代」という風に.

配列に入れているので並び替え可能かと思われますが(ソート)その場合は配列への書き込み方法を変更する必要があるかも.

ローカルファイルにデータ保存(実験)

Webアプリで入力を行わせる場合,通常はサーバ側に記録するのですが,それではデータベースが必要となります.

HTML5ではWeb Storageという機能があり,URLに紐付けてデータをブラウザ側に保存できるようです.ユーザの購買傾向を見てお奨め商品を出してくる通販サイトはこの技術を利用しているようです.

参考

このデータは何かの拍子に消える可能性もありますので,通販のお奨め商品といったレベルで重要な要素には使わない方がいいかもしれませんが,データベースを構築するよりは簡単そうです.

「保存するデータを見るのは自分だけ」「単に数値や文字といった軽いデータだけ」であればこの方法を使ってみてください.

つづく(できなかったら消す)

ネットの使用時間抑制アプリ

全てのネットワークを監視するのは難しいですが,まずはブラウザを開いた時間を取得し,設定時間でタイマーを鳴らしてみては?

バイブを鳴らすことも可能です.

これ,能動的にアクセスするしかないんですよね.

自動でアクセスする方法は,,ないかな?

iPhoneのSafariでは(正しい意味での)ホームページを追加する項目がないので,そのサイトをホーム画面に追加し,Safariを起動するんじゃなく,そのページを毎回起動し,隠しておくというのがいいのかな?

みんなで書き込むーを実現するには

「みんなで書き込む」を実現するには,データベースの構築あたりが必要かと.

PHPを使って,サーバ側に置いた○○.txtを書き換えるスクリプトをコントロールすれば良いかと.

そして,PHP,html,css,javascriptのファイルを組み合わせればできそうです.

ただphpの実行ができるサーバ環境を準備してください.

 

Unity-ローディング画面

数字だけですが,,この数字をGUIに適用すれば棒グラフ作れますね.

var percentageLoaded : float = 0;

function Update() {
    if(Application.GetStreamProgressForLevel("読み込みたいシーン名") == 1) {
        guiText.text = "ゲームの準備完了!!";
    } else {
        percentageLoaded = Application.GetStreamProgressForLevel("読み込みたいシーン名") * 100;
        guiText.text = percentageLoaded.ToString() + "%読み込みました"; 
    }
}

 

Unity-スピード検出

スピードを検出します.キャラクタコントローラがアサインされていることが必須です.

それと同じオブジェクトにアサインしてください.

#pragma strict

static var horizontalSpeed : float = 0.0;

function Start () {

}

function Update () {
    var controller : CharacterController = GetComponent(CharacterController);
    var horizontalVelocity : Vector3 = controller.velocity;
    horizontalVelocity = Vector3(controller.velocity.x, 0, controller.velocity.z);
    
    // The speed on the x-z plane ignoring any speed 
    horizontalSpeed = horizontalVelocity.magnitude;

   
  //print(horizontalSpeed);
  Debug.Log(horizontalSpeed);
}

 

Unity-カメラの切り替え

ボタンを2つ用意してカメラを切り替えます

スクリプトを適用した後,カメラをアサインしてください.

var cameraA : GameObject;
var cameraB : GameObject;
cameraA.camera.enabled = true;
cameraB.camera.enabled = false;
 function OnGUI () {
// background box
GUI.Box (Rect (Screen.width -110,10,100,90), "Cam Type");
// first button
if (GUI.Button (Rect (Screen.width -100,40,80,20), "RGB CAM")) {
cameraA.camera.enabled = true;
cameraB.camera.enabled = false;
  }

// second button.
if (GUI.Button (Rect (Screen.width -100,70,80,20), "Move CAM")) {
cameraA.camera.enabled = false;
cameraB.camera.enabled = true;
  }
}

 

Unity-GUI Layout

どうやらUnityのGUIは普通のGUIとGUI Layoutというものがあります.GUI-Skinを適用すると大きさや書体やデザインを自由に変えられます.これ,cssのようなものとおもってください.

それはともかく,GUIです.

var hSliderValue : int = 0;
var akairo : float = 0.0;


function OnGUI () {
hSliderValue = GUI.HorizontalSlider (Rect (25, 25, 100, 30), hSliderValue, 0, 255);
akairo = hSliderValue / 256.0;
// slider value display
GUILayout.BeginArea (Rect (130,20,150,70));
GUILayout.BeginVertical();
GUILayout.Box("R(8bit=0-255): " + Mathf.Round(hSliderValue));
GUILayout.EndVertical();
GUILayout.EndArea();
}

function Update () {
light.color = Color(akairo, 0.0, 0.0);
}

GUILayout.BeginAreaから始まって,GUILayout.EndAreaで終わります.この2つで囲むことが重要です.

Unity-if文の基本

いや,HTML5と同じですが,,一応,,

var cubecount : int = 0;//Unityの変数宣言,コロンで型を指定しますよ
function Update () {
 if (cubecount < 9) {//もし9未満なら

   print(cubecount);//cubecountを表示せよ
   cubecount = cubecount+ 1;//一個増やす
 }
 else {//そうじゃやないなら
   print("end");//endを表示
 }
 }

 

Unityークローンする

Unityで対象のオブジェクトを複製するJavaScriptです

//クローンする
var prefab : Transform;
for (var i : int = 0;i < 10; i++) {
Instantiate (prefab, Vector3(i * 1.1, 0, 0), Quaternion.identity);
}
//end clone script
function Update () {
}

Create EmptyしたGame Objectにスクリプトをアサインし,GUIからPrefabを指定してください.

実行すると10個複製します.

clone