2012.06.29 | 

ども、2日連続でエントリしちゃうぜ!kaminalyです。
今日は、色々とハマったのでメモ。

Socket.ioを使った開発をCoffeeScriptで楽しく進めていた。
ChromeとFirefoxで検証して問題なかったが、
さすがIE、華麗に地獄を味合わせてくれた。
ガッデム!
※全部IEのせいにしたいけど本当は違う。

(続きを読む...)

2012.05.24 | 

こんにちはmuchoです。
いい季節ですねー。皐月。
さてさて表題の件です。

Flash内にテキスト入力欄を設置して日本語入力しようとすると
入力欄とは別の位置にIMEの小窓?が開いて確定後にテキストフォームに文字が入る。
不便だなー。でもこの問題ちょくちょく起きてたしなー。
と放置気味にしていたのですが、原因が分かりました。

環境ですが
Windows Vista
Firefox 12
Flash Player 11.2
OSはさておき、最新です・・・。

Pearl Cresent Page Saver Basicというブラウザウィンドウを
キャプチャするアドオンを入れてたのですが、
こいつが。Pearl Cresent Page Saver Basicが曲者でした。
どうもPearl Cresent Page Saver Basicのオプションで
「Flashコンテンツをキャプチャー」を有効にしていると
フォームに直接日本語入力できないようです。

ということでキャプチャするアドオンを乗り換えてみました。
FireShot - Webpage Screenshots: Capture + Annotate
https://addons.mozilla.org/en-US/firefox/addon/fireshot/
アイコンが分かりにくいですが設定いじれば機能的には問題なさそうです。

同じような現象で苦しんでる方(もしや少数民族?)
の助けになればいいなと思いメモ。

2012.04.27 | 

こんにちは。muchoです。
昨夜は会社で事務所移転の打ち上げをしたんですが、
盛り上がりすぎて近隣の皆様に大変なご迷惑をおかけしました。
申し訳ございませんでした。お詫び申し上げます。

さてさてさてさて。
前に一度書いて、えーとあれはどうするんだっけ?となったのでメモ。
デバッグプレイヤーでエラーがポップアップしないようにする方法です。
もう一つ、書き出しがデバッグモードかリリースモードかの判定もメモ。

不明なエラーイベントを取得するUncaughtErrorEventsクラスを使います。
loaderInfo、LoaderにaddEventListenerで使います。
書き出しのバージョンが10.1以上で使えます。

さらにキモなのがイベント発生時に e.preventDefault(); を入れて
デフォルト時の挙動を抑える方法です。これでエラーのポップアップは
しなくなります。



public function Main():void 
{
	// 書き出しのモード判定
	isDebug = Boolean(new Error().getStackTrace().search(/:[0-9]+]$/m) > -1);

	//予期せぬエラー表示対策
	loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);
}

private function onUncaughtError(e:UncaughtErrorEvent):void
{
	e.preventDefault(); //←これがないとポップアップします。

	// デバッグ時にはエラーを把握するためにtraceしてみる
	if (isDebug) {
		trace(e.error.type+":"+	e.error.text);
	}
}



さりげなくハマったのが、書き出しのバージョン。
10.0と10.1の違いって、あれやこれや結構ありますね。。。

2011.12.20 | 

やぁやぁ、kaminayです。だいぶ久しぶりの投稿になってしまった。
自分的にも、DevJamMemo的にも。

そんな久しぶりのmemoはハマったのでメモでした(汗

as3で透過(alpha)付きのマスクのやり方は
いろんなブログ(muchoも書いてたような・・・)や、
adobeのマニュアルにもあるので説明は不要だと思いますが、

maskをかける方、かけられる方の
両方のDisplayObjectのcacheAsBitmapを有効にするだけです。


/*
var view:DisplayObject;
var mask:DisplayObject;
*/
view.cacheAsBitmap = mask.cacheAsBitmap = true;
view.mask = mask;

今回、いつものやり方ではうまく動かない事例を発見しました。
多分、バグではないかと思うんだけど、どうだろう。。

ダメだったのはこんな時でした。


/*
var view:DisplayObject;
var mask:shape;
var bitmapData:BitmapData;
*/
view.cacheAsBitmap = mask.cacheAsBitmap = true;
view.mask = mask;
mask.graphics.beginBitmapFill(bitmapData);
mask.graphics.drawRect(0, 0, bitmapData.width, bitmapData.height);

addEventListener(Event.ENTER_FRAME, function(e:Event):void{
	//bitmapDataをいじいじ
});

つまり、graphics.beginBitmapFill()であてた
bitmapDataをmaskの範囲として使う場合です。

cacheAsBitmapでキャッシュされているデータの更新は
DisplayObjectのviewに関する情報の更新を検知して行っていると思うので、
そのチェックするリストにgraphics.beginBitmapFill()であてた
bitmapDataが入ってないんだと思います。

bitmapDataを使いたいなら、Bitmap使えばいいじゃんという話ですが、
※Bitmapの場合は透過付きマスクは先の方法で適応できます。

今、bitmapDataをいじいじするクラスを書いていて、
bitmapDataの参照を他に渡してしまうと、
外からでdisposeをされて動かなくなるとか、
逆に外で使ってるのにdisposeしちゃうとか、
bitmapDataの管理が面倒になると思ったので、
マスターのbitmapDataをクラスで持って、
graphicsを引数でとって、それにdrawRectしてあげるメソッドを用意するという方法をとっていました。
とてもニッチなケースですね(汗

途中までいい具合だったんですが、
maskとして使ってみようかな?と軽い気持ちでいたら急にハマりました。

対処方法は
graphicsに再度drawRectしてあげると更新されます。
まぁ当り前ですね。

他にも方法がありそうなんですが、
scaleを変えてみたりとか色々試しましたが、結局drawRectで落ち着きました。

PS
せっかくマスク効くようになったけど、
拡大しながら使っていたので、
画質的にイマイチという結果に(汗

2011.09.02 | 

FFFTPが開発終了のお知らせが出ましたね。
お世話になったソフトでした。
開発者のSotaさん大変お疲れ様でした。
こんばんはムーチョです。

と、そんな出だしとはうってかわってちょっとハマったのでメモ。
Cinderで画像を読み込んで描画というやつですが、
それをパーティクルのように描画位置やサイズを変更する方法
(続きを読む...)