Posts Tagged ‘as3’

#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 jp.progression.core.commands::Command/execute()
at jp.progression.commands::ParallelList/_execute()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at jp.progression.core.commands::Command/_executeStart()
at jp.progression.core.commands::Command/execute()
at jp.progression.commands::SerialList/_executeLoop()
at jp.progression.commands::SerialList/_execute()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at jp.progression.core.commands::Command/_executeStart()
at jp.progression.core.commands::Command/execute()
at toji::Index/showSlideImage()
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 jp.progression.core.commands::Command/execute()
at jp.progression.commands::SerialList/_executeLoop()
at jp.progression.commands::SerialList/_commandComplete()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at jp.nium.events::EventIntegrator/dispatchEvent()
at jp.progression.core.commands::Command/executeComplete()
at jp.progression.commands::DoTweener/_complete()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at jp.nium.events::EventIntegrator/dispatchEvent()
at jp.nium.api.tweener::TweenerHelper/_onComplete()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at caurina.transitions::Tweener$/updateTweenByIndex()
at caurina.transitions::Tweener$/updateTweens()
at caurina.transitions::Tweener$/onEnterFrame()
[ERROR]



これ、ProgressionのCommandを疑った僕がバカでした。

Progressionサイコーです。


ただ、Objectのkeyの値の文字を一文字間違えてただけでしたorz

記念というなの戒めとして、残しておくことにします。


(夜明けのバグとり時にて)

読み込んだ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) {
checkChildren(instance)
}
}

}


// trace results
[object kondoImg4]
[object Bitmap]
[object Bitmap] is Bitmap //<-ここ注目
[object MovieClip]
[object Shape]
[object MovieClip]
[object Shape]
[PageTopButton id="null" name="instance26" group="null"]
[object Shape]
[object StaticText]
[object StaticText]
...

ってなる。


でもね。
普通にFLASH上のステージ上に画像を配置するだけだとだめなの。

![library panel](/wp-content/uploads/2009/03/2009-03-22_015811.png)

ライブラリでBitmapクラスを適用しないと :-<


今、100個近い書き出したSWFの画像にだけ何かしたい状況なんだけど、、

泣けてきたわ(^O^)/

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文字列からファイル拡張子の値の取得

as3; first-line: 0;">var file:String = "swf/index.swf";
var file_extension:String = file.substring(file.lastIndexOf(".") + 1, file.length).toLowerCase();

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)という風に増やしていく。

また、同じところでつまづいて、このメモを参照したときに内容を書き足すってことで、とりあえず、メモエントリ。