blog.knym.net | I'm searching something to change my life.
#1010: A term is undefined and has no properties.にてんぱる
[ERROR]
TypeError: Error #1010: A term is undefined and has no properties.
at toji::Index/getColorCommands()
at MethodInfo-2341()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at jp.progression.commands::Func/_execute()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at jp.progression.core.commands::Command/_executeStart()
at…
読み込んだswfの中のinstanceのbitmapだけに何かしたいとき~
var swf = loader.content.root as MovieClip;
checkChildren(swf);
function checkChildren(container:DisplayObjectContainer) {
for (var i:int = 0; i < container.numChildren; i++)
{
var instance:* = container.getChildAt(i);
trace(instance);
if (instance is Bitmap) {
trace(instance+" is Bitmap");
}else if (instance is DisplayObjectContainer) {…
progressionでpreloaderごしにindex.swfを読み込むとエラーが出るようになった
TypeError: Error #1034: Type Coercion failed: cannot convert jp.progression.core.ui::ToolTip@28e34c41 to jp.progression.core.ui.ToolTip.
at jp.progression.casts::CastButton()
んー、いつのタイミングでこうなったのか、エラーの原因がWAKARAN(>_<)
preloaderを直すのをあきらめて、index.swfにpreloadの処理をうめて
preloader.swfでなくindex.swfを読み込むようにして難を逃れました。
例外がおきているのは、Flexのコード内で、Flexのソースをざっと追った限り、何かスクリーンの矩形か、スクリーン上の座標を取得している箇所で、nullアクセスが起きているように思えます。なぜそうなっているのかまではさすがにわかりませんでした…。
via http://forum.progression.jp/index.php?topic=41.msg255#msg255
つーことらしいんだけど、おんなじ症状なのだろうか。
ま、回避できたんで、いいことにしました
BitmapにsmoothingをかけてSWFサイズを縮小してもディザリングが汚い
StageScaleMode.NO_BORDER
で画面サイズにBitmap画像がフィットするかんじにして、SWFファイルのサイズを変更してもきれいにならない。
タグの画像サイズを無理やり縮小させた感じ。
それはbitmap.smoothing=true;ってしてても縮小処理をしてるのはHTML側なので汚くなるのだろう。
当然といえば当然だな。
つーことで、StageScaleMode.NO_SCALEにして、画像をステージサイズにフィットする処理を書こう。
オブジェクトが継承してるクラス名の取得
import flash.utils.describeType;
//itemという変数のクラス名をとるとき
var className:String = String(describeType(item).@name).match(/::(.*)/)[1];
flash.utilsはあなどれん。
AS3でURL文字列からファイル拡張子の値の取得
var file:String = "swf/index.swf"; var file_extension:String = file.substring(file.lastIndexOf(".") + 1, file.length).toLowerCase();</p> <p>trace(file_extension); //=> swf
多分もう一度見ることになる気がする。。
movieclipの重なってる部分のフェード
ムービークリップの中に重なる部分があるとそこが変な感じになったわけよ。(適当)
↓こんなかんじだけだと。
var mc:MovieClip = new MyMC();//MyMCは画像なんかが重なってるムービークリップね。
mc.alpha = 0;
Tweener.addTween(mc, {_autoAlpha:1, time:3});
んで、maskかけてそのmaskにフェードかけないとダメかなーって思ってた矢先、ひらめいた。
mc.blendMode = BlendMode.SCREEN;
を加えるだけでその変な感じがとれることに!
ひらめきって大事。
(googleで”as3 alpha 重なり”とかで検索かけてもなかなか見つからなかったけど、簡単にできてよかった)
フェードをかけてて重なってる部分が変だってときの参考までに。
progressionでFuncコマンドをfor文でつくったときの変数の渡し方
var list:SerialList = new SerialList();
for each(var item:Object in data)
{
list.addCommand(
new Func(function(item:Object) :void{
...
},[item]);//<- ここ
);
}
上記の方法でなく、Funcコマンド内のfunctionでitemを直接参照すると、最後の値だけしか参照されない。(と思う)
渡したい変数を追加したいときは
[item]の値を[item,hoge]という風に変数を配列に追加して、Func(function(item:Object,hoge:Hoge)という風に増やしていく。
また、同じところでつまづいて、このメモを参照したときに内容を書き足すってことで、とりあえず、メモエントリ。