// 名前空間の登録 registerNamespace("ITmedia.Gadget.Example.AnalogTime"); // コンストラクタ ITmedia.Gadget.Example.AnalogTime = function(p_elSource, p_args, p_namespace) { // 基底のinitializeBaseを呼び出す ITmedia.Gadget.Example.AnalogTime.initializeBase(this, arguments); // 各種情報の保存 // 自分自身 var m_this = this; // DOMオブジェクト var m_el = p_elSource; // argsオブジェクト var m_args = p_args; // jgオブジェクト var m_jg; // インターバル var m_interval; // initializeメソッド this.initialize = function(p_objScope) { // 基底のinitializeメソッドを呼び出す ITmedia.Gadget.Example.AnalogTime.getBaseMethod( this, "initialize", "Web.Bindings.Base").call(this, p_objScope); // 描画用のキャンバスを作る m_el.innerHTML = "
"; // jgオブジェクトを作る m_jg = new jsGraphics('canvas'); // 1秒ごとに描画ルーチンを呼び出すように設定 m_interval = setInterval(DrawClock, 1000); } ITmedia.Gadget.Example.AnalogTime.registerBaseMethod(this, "initialize"); // disposeメソッド this.dispose = function(p_blnUnload) { // インターバルを解除 clearInterval(m_interval); m_jg = null; // 基底のdisposeメソッドを呼び出す ITmedia.Gadget.Example.AnalogTimegetBaseMethod( this, "dispose", "Web.Bindings.Base").call(this, p_blnUnload); } ITmedia.Gadget.Example.AnalogTime.registerBaseMethod(this, "dispose"); // DrawClock関数 function DrawClock() { // 背景の円を描画する m_jg.setColor("#cccc00"); m_jg.fillEllipse(0, 0, 150, 150); // 現在の時刻を取得 now = new Date(); // 短針の描画 m_jg.setColor("#000000"); m_jg.drawLine( 75, 75, 50 * Math.sin(now.getHours() * Math.PI * 2.0 / 12.0) + 75, -50 * Math.cos(now.getHours() * Math.PI * 2.0 / 12.0) + 75); // 長針の描画 m_jg.drawLine( 75, 75, 60 * Math.sin(now.getMinutes() * Math.PI * 2.0 / 60.0) + 75, -60 * Math.cos(now.getMinutes() * Math.PI * 2.0 / 60.0) + 75); // 秒針の描画 m_jg.drawLine( 75, 75, 70 * Math.sin(now.getSeconds() * Math.PI * 2.0 / 60.0) + 75, -70 * Math.cos(now.getSeconds() * Math.PI * 2.0 / 60.0) + 75); m_jg.paint(); } } // クラスを登録 ITmedia.Gadget.Example.AnalogTime.registerClass( "ITmedia.Gadget.Example.AnalogTime", "Web.Bindings.Base");