台風前線 | 台風画報(ブログパーツ)
今年の台風シーズンに合わせて台風前線がアップデートしました。
ブログパーツが誕生したようです。
去年一緒につくっていた碓井さんが、
1年も前に自分が書いたAS2のコードを、アップデートしてくれたみたいで、
本当にありがとうございます。
今年の台風シーズンに合わせて台風前線がアップデートしました。
ブログパーツが誕生したようです。
去年一緒につくっていた碓井さんが、
1年も前に自分が書いたAS2のコードを、アップデートしてくれたみたいで、
本当にありがとうございます。
・Ctrl + alt + ↓ 行複製
FlashDevelopではCtrl + Dでお世話になっていた機能。
Flex使うようになって半年でようやく発見。
・Ctrl + alt + R 変数名変更
非常に便利
・Ctrl + Shift + C コメントアウト
これも便利
また何かあったら書き足す

openFrameworksを触ってみました。
まずはセットアップのメモ (Win Xp)
openframeworksのサイトを参考に
- openframeworks: about
- openframeworks: installation visual studio (VC++ 2005, express edition)
VSS2005をインストール
- Visual Studio Express Edition の過去のバージョンのダウンロード
Windows SDK for Windows Server 2008 and .NET Framework 3.5をインストール
- Download details Windows SDK for Windows Server 2008 and .NET Framework version 3.5
DirectX Software Development Kitをインストール
- Download details DirectX SDK - (March 2008)
最初printfの書き方すら忘れていて、久々のC、初のC++に苦戦しながら、
前からずっと書きたかったグラデーションを書きました。
以下、勝手な感想
シリアル通信が簡単にできそうなので、インスタレーションものには使えるのかも。
Processingとかが対抗馬な印象だけれど、Cで動くから早そう。
OpenCVとかがaddOnとして使えるから画像処理系も色々できるかも。
-参考
Diamond-square algorithm - Wikipedia, the free encyclopedia
printf - Wikipedia
SyntaxHighlighterを導入。
<pre name="code" class="actionscript"></pre>
でコードに色を付けてくれる。
× WordPressのプラグインを使えば、
[sourcecode language='css'] … [/sourcecode] や
[css] … [/css] のような表記でもいけるらしいが、色々微妙で削除。
- WordPress › SyntaxHighlighter« WordPress Plugins
- WordPress › SyntaxHighlighter Plus « WordPress Plugins
× WorPress上に設定パネルができて、使う言語とかオプションを設定できる
プラグインもあったが、<pre>タグではなく、<textarea>タグで
挿入されるのがなんとなく気持ち悪いので削除。
- SyntaxHighlighter @ Open Sourced Brain.
○ 結局、Mark氏が公開しているAS3用のjsだけ追加した。
- AS3 Syntax Highlighting (with SyntaxHighlighter)
△ また、IE6 (Mac OSX 10.5 - Parellels - Win xp) で奇数の行番号が
なぜか全部1になってしまったのだが、対策を考えるのが面倒になって、
<pre name="code" class="actionscript:nogutter">
と書いて、行番号を出さないことにした。
- Configuration - syntaxhighlighter - Google Code
—-
やり方をまとめると、
1) syntaxhigHlighterをダウンロード
- http://code.google.com/p/syntaxhighlighter/
2) Mark氏のサイトからAS3用拡張をダウンロード
- http://www.digitalflipbook.com/archives/2007/09/as3_syntax_high.php
3) 1を解凍したフォルダ内、dp.SyntaxHighlighter/Scripts に
shBrushAS3.js を追加
4) 3と同様に dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css を
2のStyles内のものと置き換え(見やすいので)
5) jsとcssの入ったフォルダをアップロード
6) js, cssへのパスを通す
<link type="text/css" rel="stylesheet" href="/blog/styes/SyntaxHighlighter.css"></link>
<script language="javascript" src="/blog/scripts/shCore.js"></script>
<script language="javascript" src="/blog/scripts/shBrushAS3.js"></script>
<script language="javascript" src="/blog/scripts/shBrushXml.js"></script>
<script language="javascript">
window.onload = function () {
dp.SyntaxHighlighter.ClipboardSwf = '/blog/scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
}
</script>
7) 以下のタグでコードを囲む。
<pre name="code" class="actionscript"> ... </pre>
たくさんのFLVをいかに効率よく、美しく流すか。
みたいなメモです。
- 前提
Video、NetStreamやNetConnectionなどの処理を
まとめたVideoSpriteクラス、みたいなものを作る。
これらのインスタンスを毎回消去して、新しくnewすると
ブラウザに負荷がかかるので、消去せずに再利用する。
- 再利用と消去
以下に載せたクラスで、再利用前にやるのがsleepメソッド。
本当にいらなくなった時に消去するために呼ぶのがkillメソッド。
- ノイズ防止
FLVはキーフレーム間を差分で描画しているので、無茶な処理をすると
ピンクのノイズが出て、描画がボロボロになります。その対策。
1. 一度playを実行した_ns(NetStream)に再度playをかける時は、
必ずthis._ns.close();を呼んでから。
2. 再生中のものを頭出ししてすぐ再生したい時は
pause(); → seek(0); → NetStatusEventのNetStream.Seek.Notifyを受ける。
→ resume();
(単純に1のように、closeして再度playでもいい気がします)
– 追記(08/05/20):
再生中のものはすでにキャッシュ済みなのですぐ再生可能
→ 単純に1のように、closeして再度playした方が良いです。
—-
まとめると、closeし忘れに注意ということです。
以下 as。
package{
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
public class VideoSprite extends Sprite
private var _video:Video;
private var _nc:NetConnection;
private var _ns:NetStream;
public function VideoSprite():void{
this._video = new Video();
this.addChild(this._video);
//NetConnectionをnew
this._nc = new NetConnection();
this._nc.connect(null);
//NetStreamをnew
this._ns = new NetStream(this._nc);
var customClient = new Object();
this._ns.client = customClient;
//NetStreamをattach
this._video.attachNetStream(this._ns);
//イベント定義
this._ns.addEventListener(NetStatusEvent.NET_STATUS, this.statusHandler);
}
//NetStatusEvent処理
private function statusHandler(event:NetStatusEvent):void
{
switch(event.info.code) {
// 省略
default:
break;
}
}
//色々省略
//再利用時のクローズ作業
public function sleep():void{
this._video.clear();
this._nc.close();
this._ns.close();
}
//消去時
public function kill():void {
this.sleep();
this.removeChild(this._video);
this._ns.removeEventListener(NetStatusEvent.NET_STATUS, this.statusHandler);
this._video.attachNetStream(null);
this._ns = null;
this._nc = null;
this._customClient = null;
this._video = null;
}
}
}