SewiGの日記
2005-10-12 [水]
■ [Programming] 某プロジェクト
Eclipseのプロジェクトをtar玉で固めたソースコードがあるんだけど、ライブラリのパスが「環境変数+.jar」だったり「E:\〜+.jar」だったりするのよ。お願いです、前者で統一してください。絶対パスで決めうちされると、修正する方が大変です。
こんな設定を見てると、ホームページビルダーなんかで作られたWebページで画像が表示されてなくてソースを見たら、「C:\Documents and Settings\〜\hoge.gif」みたいなローカルのファイルシステムの絶対パスで書かれてました、みたいな歯がゆさを覚えます。
2006-10-12 [木]
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とか)
Before...
● casino9 [онлайн казино на реальные деньги рулетка по всему миру и и..]
● Kaspirol [Hello, DJs Club VIP Download Private FTP Server trax 10000..]
● Claudiocer [Hello, Best music download private server: https://0d..]