AIRでメッセンジャーみたいにポップアップするウィンドウを表示する
ちょっと、タスク管理系のアプリを作ってて、情報をポップアップさせたいことがあったので、作ってみました。 ここにソースを載せておきます。
PopupWindow.mxml
-
<mx:Window xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="305" height="305" systemchrome="none" transparent="true" resizable="false" alwaysinfront="true" type="utility" showtitlebar="false" showstatusbar="false" showgripper="false" backgroundalpha="0.0" borderstyle="none">
-
<mx:states>
-
<mx:state name="shown">
-
<mx:setproperty target="{windowContainer}" name="height" value="300"></mx:setproperty>
-
<mx:setproperty target="{windowContainer}" name="visible" value="true"></mx:setproperty>
-
<mx:setproperty target="{windowContainer}" name="y" value="0"></mx:setproperty>
-
</mx:state>
-
</mx:states>
-
<mx:titlewindow id="windowContainer" layout="absolute" x="0" y="300" width="300" height="0" title="やることリスト" alpha="0" fontsize="15" cornerradius="15" showclosebutton="true" roundedbottomcorners="true" bordercolor="#99A0FF" borderalpha="1" backgroundcolor="#99A0FF" backgroundalpha="1" horizontalscrollpolicy="off" verticalscrollpolicy="off" creationcomplete="this.setCurrentState('shown')" close="this.close()">
-
<mx:moveeffect>
-
<mx:parallel>
-
<mx:move duration="500">
-
</mx:move>
-
<mx:animateproperty property="alpha" duration="500" fromvalue="0" tovalue="1">
-
</mx:animateproperty>
-
</mx:parallel>
-
</mx:moveeffect>
-
<mx:resizeeffect>
-
<mx:resize duration="500">
-
</mx:resize>
-
</mx:resizeeffect>
-
<mx:textarea width="100%" height="100%" cornerradius="15" verticalscrollpolicy="off" horizontalscrollpolicy="off" text="{todoText}" wordwrap="false" enabled="false" selectable="false" editable="false" disabledcolor="#000000" backgrounddisabledcolor="#E4E5FF" paddingtop="5" paddingleft="5" paddingright="5" paddingbottom="5">
-
</mx:textarea>
-
</mx:titlewindow>
-
<mx:string id="todoText">- DarkOmeme 今日の予定 -
-
* 世界征服
-
* 資金集め
-
* 根回し
-
* 物資調達
-
* 核武装
-
* クーデター
-
* 新法制定
-
* 宣戦布告
-
* 回覧板を田中さんに持って行く
-
* 今週はごみの当番
-
* おじいちゃんのお見舞いにいく
-
</mx:string>
-
</mx:window>
PopupWindowSample.mxml
-
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationcomplete="onCreationComplete()">
-
<mx:script>
-
<!--[CDATA[
-
import me.rkome.da.window.PopupWindow;
-
private function onCreationComplete():void
-
{
-
var popup:PopupWindow = new PopupWindow();
-
popup.open();
-
popup.move(Screen.mainScreen.bounds.width - popup.width - 5, Screen.mainScreen.bounds.height - popup.height - 5);
-
popup.addEventListener(Event.CLOSE, function (evt:Event):void {
-
NativeApplication.nativeApplication.exit();
-
});
-
}
-
]]-->
-
</mx:script>
-
</mx:Application>
あまり、解説することも少ないと思いますが、ミソとなるのは、土台となるmx:WindowのsystemChromeをnoneにして透明にすることで、自由な形のウィンドウを作れます。
また、この透明のウィンドウ上に表示するオブジェクトにはエフェクトなんかもかけられるので、Flash的なカッコいいエフェクトがかけれてAIRのメリットを最大限に活かせるんじゃないでしょうか。無駄にカッコいい的な。
PopupWindow.mxmlの方では、type属性をutilityにすることで、タスクバーに表示されなくなります。情報を見せるポップアップウィンドウなので、この設定が有効だと思います。
引き続きSharePointネタ
SharePointでWindows SharePoint Services Webを使ってリストのデータを取得しているんですが、定期的なイベントのデータはQueryタグの指定にEventDateとEndDateの指定だけしたのでは上手く取得できませんでした。
<Query> <And> <Geq> <FieldRef Name="EventDate" /> <Value Type="DateTime">2009-02-17T00:00:00</Value> </Geq> <Leq> <FieldRef Name="EndDate" /> <Value Type="DateTime">2009-02-17T00:00:00</Value> </Leq> </And> </Query>
とか書いてるんですが、これだと削除された定期的なイベントとかも引っかかってきます。
そんで調べてたら、こんな記事を見つけました。
どうやら、EventTypeというフィールドがあるらしく、これによると削除されたイベントはEventTypeが3になっているみたいです。
SharePoint × Flash
どうも、DarkOmemeです。
RTMPでストリーミングが終わったんで、息抜き程度にMicrosoftのSharePointをFlashから弄って、本家より使いやすいもん作ってしまおう、みたいなことをやってます。
そのうち、SharePoint連携するためのクラスとかを公開できたらいいかな。
SharePointはWindows SharePoint Services WebとかいうAPIを持っているので、そいつを使ってやればFlashからでもリストやらドキュメントやらユーザー情報やらを操作することができるようです。
僕が今作っているのは、社内Webシステムとして使っているSharePointを高速かつスマートに操作するFlashアプリなので、セキュリティ的にはあまり考えていません。
調査している時、役に立ったリンクなどいくつかはっつけておきます。