忍者ブログ
研究室生活のメモ・・・だった過去の遺産。移転先→http://negimochix2.blogspot.com/
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

FlashDevelopでASのコーディングをして、
Flash CS3(CS4)でパブリッシュする方法。

一応、動画でやり方が紹介されているのを見つけた。
http://www.trick7.com/blog/video/flashdevelop/

忘れるたびに動画を見るのは億劫なので、c⌒っ゚д゚)っφ メモメモ...

0. FlashDevelopを起動し、F10を押す。
[Plugins] - [ASCompletion] - [Flash IDE] - [Path To Flash IDE]の項目に、
Flash CS3(CS4)のPathが設定されていることを確認する。
設定されてなければ、自分でパスを設定する。

1. FlashDevelopの[Project] - [New Project ...]を選択。

2. ActionScript 3 - Flash IDE Projectを選択。
プロジェクト名、保存先を指定してOK。

3. 右側のプロジェクトタブからプロジェクト名を右クリックし、[Add] - [New Class...]
メインクラスを作成。
このとき、メインクラスはMovieClipをサブクラスとする必要があるので、
とりあえず、Sprite継承にしておく。

3. Flash CS3(CS4)を起動して、[ファイル] - [新規...]
Flashファイル(AS 3.0)を選択してOK。

4. flaファイルをプロジェクトファイルと同じ場所に保存。

5. flaドキュメントのプロパティ内の[ドキュメントクラス](CS4では[クラス]と表記されてる)
に先ほど作ったメインクラスを指定。



これだけで、FlashDevelopからF6キーを押すだけで、自動でFlash CS3(CS4)が立ち上がり、
CS側からパブリッシュしてくれる。

コーディングは、FlashDevelopの補完機能が便利でウマウマ。
また、FlashDevelopはフォルダに追加したasファイルも自動で認識してくれるので、
asのファイル管理もウマウマ。

CSだと、asファイル、flaファイルの切り替えが面倒で・・・。
ドキュメントクラスでメインクラス設定すれば、
CSのライブラリ内のオブジェクトも使えるし、
まさに理想的環境!


追記:
ちなみに、AIRの自動補完をしたい場合。

1. FlashDevelopの[Project] - [Properties...]を選択。

2. [Compiler Options] - [SWC Include Libraries]を選択。

3. 以下のパスを設定。
  CS3の場合: C:\Program Files\Adobe\Adobe Flash CS3\
                             ja\Configuration\ActionScript 3.0 AIR 1.0\Classes\playerglobal.swc
  CS4の場合:C:\Program Files\Adobe\Adobe Flash CS4\
                            Common\Configuration\ActionScript 3.0\AIR1.5\airglobal.swc

4. 一応再起動。

CS3,CS4でパスが違うから注意。
PR


この不安定さがたまらなく好き。

サビの壮大なオケに圧倒される。


なんか最近、こんな感じのダークな曲ばっかり聴いてる。

あ、いや別に、研究とかで忙しいけど、病んでるつもりはないっすよ
CA3C0147.JPG
▲これ・・・研究室の机なんだぜ.むしろ,ミク以外の方が(ry

一日ずれたけど.


ミクが世に出て早2年!
でも,この間,いろいろな人を巻き込みながら,大きく成長したよね.ミクさん.

今まで無名だった人も、ボカロからアーティストとして活躍できたり,
3D化,PV,作ってみた,歌ってみたなど,たくさんの人を巻き込んできた.


今後,この巨大なうねりはどこへ向かっていくのか・・・.

ニコニコでミクフェス'09見てたらふと思いますた.



・・・自分も何かできたらいいな.

DTX GDP.
個人的反省点を列挙.

【技術面】
・テーブルの正規化をなめてた
何度も正規化については,議論していたつもりだったが,まだ甘かった.
楽器別にテーブルを分けたために,後々になってIRページの算出時に問題が起きた.
さらに,SQL文も膨大になり,収拾がつかないことに・・・.
やっぱ,楽器でキーを割り当てて,全レコードを一つのテーブルに納めるべきだった.

・Flash → PHPの構造
勉強不足.結果的に,送受信のシステムはできたものの,かなり不安定なものだったかも.
そもそも,XMLを丸ごと送る構造でよかったのか?
別の方法で送った方が,問題がおきなかったかもしれない.

【対応面】
・対応が遅い
研究が忙しかった・・・でも,これは言い訳にしかならないだろう.
もっと効率化できるように,プログラムエラー系を手厚くしておけば,もっと楽に保守できたはず.

・バグ多すぎ
これは,βテストをすべきだった.
スケジュール的にかなり無理をしてのは事実だが,
今まで自分がやったことない言語で組むんだから,余計入念なチェックが必要だったはず.

【その他】
・見た目
アプリの方の見た目は多少拘った.でも,IRページについてはテキトー.
所詮,軽くCSSで設定しただけ.あまりに味気ない.


とりあえず,こんなところだろうか.

このイベントに限らず,今後こういった人に見せるモノを作る際は気をつけておかなければ.

今回は,本当に様々な面で勉強させていただきました.
関係者の皆様,ユーザの皆様,ありがとうございました.
AIRで追加されたNativeWindowクラス.
ウインドウ操作を扱うクラスで,簡単にウインドウを生成・制御可能.
Flash独特のグラフィックス環境を用いて,オリジナルのスキンでウインドウを作ることができる.
そのサンプルがこれ.
あまり一般的な書き方してないけど.
package {
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.display.Sprite;
	import flash.display.NativeWindow;
	import flash.display.NativeWindowType;
	import flash.display.NativeWindowInitOptions;
	import flash.display.NativeWindowSystemChrome;
	import flash.display.StageScaleMode;
	import flash.display.StageAlign;
	import flash.geom.Rectangle;
	import flash.display.DisplayObject;
	
	// Tweener(ウインドウのエフェクト用)
	import caurina.transitions.Tweener;
	import caurina.transitions.properties.FilterShortcuts;

	
	public class NativeWindowEx extends NativeWindow {
		protected var base:Sprite;
		// ウインドウのオリジナルスキン(CS4で作成後Sprite継承でASに書き込み指定)
		private var skin:DialogSkin;
		
		public function NativeWindowEx(initX:int, initY:int, initTitle:String, initDO:DisplayObject) {
			// NativeWindowのオプション
			var nwOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
			// ウインドウタイプ
			nwOptions.type = NativeWindowType.LIGHTWEIGHT;
			// システムクロームの設定
			nwOptions.systemChrome = NativeWindowSystemChrome.NONE;
			// ウインドウにalpha値を適用するかどうか
			nwOptions.transparent = true;
			// 最小化できるかどうか
			nwOptions.minimizable = true;
			// 最大化できるかどうか
			nwOptions.maximizable = false;
			// ウインドウサイズを変更できるかどうか
			nwOptions.resizable= false;
			super(nwOptions);
			
			base = new Sprite();
			base.alpha = 0.0;
			// NativeWindowの持つstageにaddChild
			this.stage.addChild(base);
			
			skin = new DialogSkin();
			skin.window.addEventListener(MouseEvent.MOUSE_DOWN, skinWindowDragHandler);
			skin.close.addEventListener(MouseEvent.MOUSE_DOWN, skinCloseButtonHandler);			
			skin.close.addEventListener(MouseEvent.MOUSE_OVER, skinCloseMouseOverHandler);
			skin.close.addEventListener(MouseEvent.MOUSE_OUT, skinCloseMouseOutHandler);
			// 貼り付ける内容に合わせてスケール変換(skinはscale9Gridを設定済み)
			skin.close.scaleX = (initDO.width) / 490;
			skin.close.scaleY = (initDO.height) / 300;
			skin.window.scaleX = (initDO.width) / 490;
			skin.window.scaleY = (initDO.height) / 300;
			skin.x = 10;
			skin.y = 10;
			base.addChild(skin);
			
			var rect:Rectangle = skin.scale9Grid;
			initDO.x = rect.left + 10;
			initDO.y = rect.top + 10;
			base.addChild(initDO);
			
			super.activate();
			
			this.x = initX;
			this.y = initY;
			this.width = skin.width + 20;
			this.height = skin.height + 20;
			this.title = initTitle;
			this.stage.scaleMode = StageScaleMode.NO_SCALE;
			this.stage.align = StageAlign.TOP_LEFT;
			this.addEventListener(Event.CLOSE, windowCloseHandler);
			// フェードインでウインドウを表示
			Tweener.addTween(base, {alpha:1.0, time:0.5, transition:"linear"});
		}
		
		public function deleteReference():void {
			skin.window.removeEventListener(MouseEvent.MOUSE_DOWN, skinWindowDragHandler);
			skin.close.removeEventListener(MouseEvent.MOUSE_DOWN, skinCloseButtonHandler);
			skin.close.removeEventListener(MouseEvent.MOUSE_OVER, skinCloseMouseOverHandler);
			skin.close.removeEventListener(MouseEvent.MOUSE_OUT, skinCloseMouseOutHandler);
		}
		
		// Event Handler /////////////////////////////////////////////
		private function skinCloseMouseOverHandler(event:MouseEvent):void {
			// マウスオーバーでGlowエフェクト
			Tweener.addTween(event.currentTarget, {time:0.5, transition:"linear",
			                 _Glow_alpha:0.7, _Glow_blurX:15, _Glow_blurY:15, 
				         _Glow_color:0x00CCCC,
			                 _Glow_quality:1, _Glow_strength:1});
		}
		
		private function skinCloseMouseOutHandler(event:MouseEvent):void {
			// マウスアウトでGlowエフェクト解除
			Tweener.addTween(event.currentTarget, {time:0.5, transition:"linear",
			                  _Glow_alpha:0});
		}
		
		protected function windowCloseHandler(event:Event):void {
			this.removeEventListener(Event.CLOSE, windowCloseHandler);
		}
		
		private function windowCloseTweenComp():void {
			super.close();
			deleteReference();
		}
		
		protected function skinWindowDragHandler(event:MouseEvent):void {
			this.startMove();
		}
		
		protected function skinCloseButtonHandler(event:MouseEvent):void {
			// フェードアウトでウインドウを閉じる
			Tweener.addTween(base, {alpha:0.0, time:0.5, transition:"linear", 
			                 onComplete:windowCloseTweenComp});
		}
	}
}
NativeWindowInitOptionsで事前に作成するウインドウの設定.
オリジナルスキンを使うなら,
nwOptions.systemChrome = NativeWindowSystemChrome.NONE;
としておく.

新しく作ったウインドウにどうやってオブジェクトを表示するかというと,実は今までのやり方と全く変わらない.
this.stage.addChild(base);
というように,実は各NativeWindowがstageを所持している.
だから,今まで同様に,NativeWindow内のstageにaddChildすればいい.
つまり,表示オブジェクト的にFlashとAIRでは,

Flash:stageをトップとした階層構造
AIR :1つまたは複数のNativeWindow内のstageをトップとした階層構造

という違いがある.



各NativeWindowのメソッドについて.

activateでウインドウにフォーカスする.

このメソッドを呼び出すか,visibleをtrueにしないとウインドウが表示されないので注意.
closeでウインドウを閉じる.

startMoveでウインドウをドラッグ.
これ呼び出すだけで自動でドラッグされるとかwゆとり仕様乙
最近の「期待の新人」のクォリティーが高すぎる件について.


▲3D空間を浮遊する文字がすごい.HTMLを破壊するFlashを思い出した


▲激しくアニメ化希望

処女作でこのレベルのPVとか.
最近の作り手のレベルはハンパないっす.
見ていて飽きない.

・・・そして研究が進まないwww



▲歌詞がガチなのかネタなのか分からないw


▲普通に聴いていて気持ちがいい.動画は軽くアハ体験


▲格好良すぎる!がくぽにぴったりの曲かもね

どれもサビがかっこいいっす.

曲ももちろんだが,とても聞き取りやすい.
もうこのぐらいの調教レベルが普通になってきてるんだろうか?



みんな競うようにしてクォリティーを引き上げるのは当然いいことなんだけど・・・
なんか,気軽に投稿できなくなってしまいそうなのでこわいなぁ.

底辺の人でも気軽に参加できる仕組みがほしいと思う.
そんな自分は,音楽のできない底辺以下っすw
Infomation
くさもち 【中の人】
・くさもち
・ボカロ廃大学院生
・βからのニコ厨
・もちろん非リア充
・ミクZ4 第二期個人スポンサー

【メール】
・negimochi.tabetai(゚Д゚)gmail.com
(゚Д゚)→@

【その他やってるもの】
Twitter

・これは痛いピアプロ
・過去の遺産smart.fm

【作ったもの】
・製作に参加したDTX GDPメインサイト
で,実際に作ったIRページ
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Heartsnative
『Heartsnative/MOSAIC.WAV×鶴田加茂 feat.初音ミク』応援中!
VOCALOID Ranking Watcher
新曲は常にチェックすべし。
真・フルみっくすプレイヤー
おすすめ記事
jubeat ripples
今更やってみる