トップ «前の日(10-11) 最新 次の日(10-13)» 追記

SewiGの日記

2004|01|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|

2005-10-12 [水]

[Programming] 某プロジェクト

Eclipseのプロジェクトをtar玉で固めたソースコードがあるんだけど、ライブラリのパスが「環境変数+.jar」だったり「E:\〜+.jar」だったりするのよ。お願いです、前者で統一してください。絶対パスで決めうちされると、修正する方が大変です。

こんな設定を見てると、ホームページビルダーなんかで作られたWebページで画像が表示されてなくてソースを見たら、「C:\Documents and Settings\〜\hoge.gif」みたいなローカルのファイルシステムの絶対パスで書かれてました、みたいな歯がゆさを覚えます。


2006-10-12 [木]

[Other] また名古屋に行く理由が増えた

名古屋市に「ロボットミュージアム」が開館するそうです。

ROBOTHINKというのが主で、企画展示通常展示があり、ワークショップなど随時イベントがあるようです。テーマは「ロボットとの共存」。うっうー、行ってみたいです。雑貨やカフェレストランなどもあり休日のよい時間の使い方になりそう。


2007-10-12 [金]

[AIR] Adobe AIRでデスクトップマスコット

Adobe AIRの公式ページのサンプルプログラムは非常に参考になるのでぜひチェックしましょう。今回はウィンドウを作成して、デスクトップマスコットを作ってみます。参考にしたプログラムはPixel Perfect。Adobe AIR Beta2で作成します。

まず、メイン部分。Windows部分は独自のパッケージを作ってそこから呼び出すことにしましょう。importの最初の部分をみてください。「jp.sewig.aloemascot.MascotWindow」と書いた場合は「jp/sewig/aloemascot」というディレクトリにMascotWindow.asを入れればOKです。

// AloeMascot.as
package {
	import jp.sewig.aloemascot.MascotWindow;
	import flash.display.Sprite;
	import flash.system.Shell;
	import flash.events.InvokeEvent;
	
	import flash.ui.*;
	
	public class AloeMascot extends Sprite {
		public function AloeMascot() {
			Shell.shell.autoExit = true;
			Shell.shell.addEventListener(InvokeEvent.INVOKE, onInvoke);
		}
		
		private function onInvoke(e:InvokeEvent):void {
			new MascotWindow();
			stage.nativeWindow.close();  // 全部のWindowが閉じたら終了
		}
	}
}

次にWindow部分。NativeWindowを継承してコンストラクタでフィールドに値をセットしていきます。描画はSpriteを新たに生成して、そこに画像を描画しましょう。Loaderクラスを用いれば簡単に読み込めます。「app-resource:」は アプリケーションのインストールディレクトリからの相対パスですので、AloeMascot.asと同じディレクトリに入れておきます。コンテキストメニューはContextMenuとContextMenuItemで作成します。ItemはListenerを設定してアクションを発生させれば処理が飛びます。音声の再生はSoundクラスで。ファイルはUTF-8で保存してくださいね。

// MascotWindow.as
package jp.sewig.aloemascot {
	import flash.display.*;
	import flash.events.*;
	import flash.system.*;
	import flash.ui.*;
	import flash.net.*;
	import flash.media.*;
	import flash.filesystem.*;

	public class MascotWindow extends NativeWindow {
		private var sprite:Sprite;
		private var exitMenuItem:ContextMenuItem;
		private var viewSource:ContextMenuItem;
		private var path:URLRequest = new URLRequest("app-resource:/mascot.mp3");
		
		public function MascotWindow(width:uint = 240, height:uint = 320, x:uint = 50, y:uint = 50, alpha:Number = 1.0) {
			var winArgs:NativeWindowInitOptions = new NativeWindowInitOptions();
			winArgs.systemChrome = NativeWindowSystemChrome.NONE;
			winArgs.transparent = true;
			super(winArgs);

			// Windowの設定
			this.title = "マスコット";
			this.alwaysInFront = true;
			this.x = x;
			this.y = y;
			this.width = width;
			this.height = height;

			// Spriteの作成
			sprite = new Sprite();
			sprite.alpha = alpha;
			sprite.useHandCursor = true;
			
			// 画像
			var loader:Loader = new Loader();
			loader.load(new URLRequest("app-resource:/mascot.png"));
			loader.doubleClickEnabled = true;
			loader.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClick);
			sprite.addChild(loader);

			// コンテキストメニューの作成
			stage.showDefaultContextMenu = true;
			var cm:ContextMenu = new ContextMenu();
			cm.hideBuiltInItems();
			exitMenuItem = new ContextMenuItem("終了");
			exitMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, onExitMenuItem);
			cm.customItems.push(exitMenuItem);
			sprite.contextMenu = cm;

			// Stageの設定
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.addChild(sprite);

			// Listenerの設定
			sprite.doubleClickEnabled = true;
			sprite.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClick);
			sprite.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			
			visible = true;
		}
		
		private function onExitMenuItem(e:ContextMenuEvent):void {
			Shell.shell.exit();
		}
		
		private function onDoubleClick(e:Event):void {
			var s:Sound = new Sound();
			s.load(path);
			var channel:SoundChannel = s.play(0);
		}
		
		private function onMouseDown(e:Event):void {
			startMove();
		}
	}
}

あとは、XMLを書いてコンパイルです。今回はWindowを透過にしてアイコンも付けてみました。アイコンはicons以下に入れます。

<?xml version="1.0" encoding="UTF-8"?>
<!-- AloeMascot-app.xml -->
<application xmlns="http://ns.adobe.com/air/application/1.0.M5" appId="jp.sewig.aloemascot" version="1.0 Beta">
  <name>AloeMascot</name>
  <title>マスコット</title>
  <description>マスコットが表示されます。</description>
  <copyright>Copyright(c)2007 SewiG</copyright>

  <initialWindow>
      <content>AloeMascot.swf</content>
      <systemChrome>none</systemChrome>
      <transparent>true</transparent>
      <visible>true</visible>
  </initialWindow>

  <installFolder>sewig/aloemascot</installFolder>
  <handleUpdates/>

  <icon>
    <image128x128>icons/AIRApp_128.png</image128x128>
  </icon>
</application>

コンパイル

amxmlc -default-size 240 320 -default-frame-rate=30 -default-background-color=0xFFFFFF AloeMascot.as

AIRパッケージ作成

adt -package -certificate hogecert.pfx -password hogehoge AloeMascot.air AloeMascot-app.xml AloeMascot.swf icons mascot.png mascot.mp3

↓完成版 (あ、mascot.mp3は自前でご用意ください… あと、pfxとか)

本日のツッコミ(全157件) [ツッコミを入れる]

Before...

casino9 [онлайн казино на реальные деньги рулетка по всему миру и и..]

Kaspirol [Hello, DJs Club VIP Download Private FTP Server trax 10000..]

Claudiocer [Hello, Best music download private server: https://0d..]


Copyright © 2004-2008 SewiG All rights reserved.