スクリプト上で定義したテキストフィールドに、
指定のフォントで特定の文字だけ使いたい。
調べたらいくつか方法があるみたいなんだけど、
数字は出るが、記号やアルファベットがでない、という謎に直面。
結局、静止テキストでその文字を入力したムービークリップを用意して、
リンケージさせておくことで表示された。
解決方法も謎。ちなみに環境は MacOS 10.5.8 FlashCS4 10.0.2
Posts Tagged ‘AS3’
AS3:指定フォントで特定の文字を埋め込むときの謎
月曜日, 10月 11th, 2010AS3:Tween系ライブラリとグラデーションマスク
土曜日, 9月 25th, 2010結構贅沢というか雑な使い方なのか、他のサイトで見つけられなくて苦労したのでメモ。
グラデーションマスク上にTween付き吹出しを出すのが今回の目的。
レイヤー的には、
ふきだしMovieClip
|
グラデーションマスクMovieClip
|
吹出しを付けたいアイコン等
という感じで、カーソルがアイコン上にある場合、ふきだしがカーソルについてまわる感じ。で、それをいっぱい並べたりする。
ここで、この吹出しをMOUSE_MOVEなどで動かすわけですが、
下のグラデーションマスクが吹出しと被ると
なぜかただのマスク(2値マスク)になってしまう。
描画がリフレッシュされない感じ。
なんだかよくわからないけど、ビットマップキャッシュ辺りが絡んでそうな模様。
とりあえず、ROLL_OVER/MOUSE_MOVE/ROLL_OUTのそれぞれで
icon_mc.mask = gradMask_mc;
と毎回マスクをかけ直すことで対処しようと。
ここで問題になるのが、
マウスオーバーでこの吹出しをふわっと浮かび上がらせたい。
となると、Tween系のライブラリを使いますよね。
最初、軽くて必要十分だったKTweenというライブラリを使っていたのですが、
updateのイベントがないために、
残念ながら今回のケースではTween中にマスクが切れたりする。
すると下のアイコンがチラつきます。あー
そこで、KTween作者の方がおすすめしていた、
BetweenAS3というライブラリに変更し、
Tween中にupdateイベントで上記のマスクかけ直し続けることでなんとか成功。
どこで引っ掛てるのかマスクの階層や場所を変えたり
ビットマップキャッシュONOFFしたりと、
いろいろ試してかなりのロス…。
あ、あとビットマップキャッシュにするとなんか位置変わってたり。
いや、見た目はOKなんだけど、マウスイベントがかからなかったり。
なんだかなー
AS3:Twitterの画像を読み込むときの注意点
土曜日, 9月 11th, 2010
# 外部ドメインからロードした画像に対しては、
# ピクセルデータにアクセスできない
これはトリッキーだ!と思った。
FlashPlayerでのプレビュー時にはこの問題は起きない、
ブラウザで見たときに初めて発動する。
発動条件:
# 読み込んだ画像をBitmapDataとして使いたい
今回は、Loaderで読み込んだ画像を使いまわしたい、という
ミッションのためにその読み込んだ画像をBitmapDataで
保持する必要があった。
# そもそもLoaderやMovieClipはコピー出来ないからこんなことに…
loaderをそのままMovieClip等にaddChildすれば問題ない。
問題は、loader.content を読み出す時だ。
今回の参考サイト:テック煮ブログ
AS で別ドメインの画像を読み込むときの注意点CommentsAdd Star
# こちらのサイトの “セキュリティサンドボックス侵害への対応”
詳しくは上記サイトを参考にしてもらうとして、
とりあえずTwitterのプロフィール画像を読み込むのであれば、
LoaderContext の checkPolicyFile を true にすることで解決。
function loadStart():void { // LoaderContextを準備 var context:LoaderContext = new LoaderContext(true); var loader:Loader = new Loader(); var req:URLRequest = new URLRequest("http://www.example.com/sample.png"); loader.load(req, context); // 第2引数に context を渡す loader.contentLoaderInfo .addEventListener(Event.COMPLETE,onLoaded); } function onLoaded(e:Event):void { var bmp:Bitmap = Bitmap(e.target.content); }
ご参考までに。