ActionScriptの最近のブログ記事

どんなもののロードでも瞬時にローディングバーを作成するActionScript2 ライブラリLoadingInitクラス

↓ダウンロードはこちらから↓
LoadingInit.as

使い方とか
ダウンロードしたファイルを、flaやswfがあるフォルダに、libフォルダを作ってその中に入れます。
次に、フレームアクションに下記のコードを記述してね。

import lib.LoadingInit;
var hoge:LoadingInit = new LoadingInit( ロードするオブジェクトへのパス );

例:swfのローディング進行状況を表示したい場合。
import lib.LoadingInit;
var hoge:LoadingInit = new LoadingInit( _root );

補足とか
_rootフレームを一旦stop()させて、ローディングが完了したらplay()しているよ!
適当に作ったので「_rootを止めるってそんな、俺のじゃうかねぇよ、どうすんだゴルァ!!」とか言われても困ります。ごめんなさい。気が向いたら改造します。

flex-3matrix-test.jpg
※ クリックで別窓にてFlashに飛びます。

参考:PHP,MySQL,Flexな日々
haru-komugiさん勉強になりました。ありがとうございます。
ActionScript3 シングルトンデザインパターン

最新ソース
package
{
   
    /**
     * ...
     * @author DefaultUser (Tools -> Custom Arguments...)
     */
    public class  Singleton
    {
        private static var instance:Singleton = null;
       
        public function Singleton()
        {
            //statement
            if (instance == null) {
                trace("Singleton Object");
                instance = this;
            } else {
                trace("にゅーしてあるよ!");
                throw new Error("singleton class!");
            }
        }
       
        public static function getinstance():Singleton
        {
            //statement
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
}

呼び出し
Singleton.getinstance();
new Singleton();
など

感想・考察・その他
過去ソース1:これで合ってるのかな。

追記
5.6.09 12:07 間違ってた。わからん。
5.6.09 12:34 参考のモノと同じになった。ていうか、クラスメソッドスタティックメソッドいらねぇんじゃね。

参考
trick7:FlashとSingletonパターン
機関誌​/2008年度夏季機関誌​/sc15_Singleton Pattern in ActionScript3.0
moriBlog:AS3でデザインパターン -Singleton(シングルトン)-

うまく解説できませんが、AS3を教えてください。

mx:Listにカスタムアイテムレンダラに複数のFactoryオブジェクトを入れ込んだりもできないかな・・・。
listクラスはコンテナじゃない?ってのはどういうことなんだ?
listクラスにCanvasをFactoryオブジェクトとしてカスタムアイテムレンダラに入れて、出てきたdata?オブジェクトにaddChildしても何も表示されなかった。
そもそもlistオブジェクト.itemRendererはどう使うのか。
そもそもlistItemRendererとどう違うのか。
そもそもlistクラスを使うのが間違いなのか。
そもそもlistはクラスなのか。
そもそもやろうとしていることはlistを使っていいのか。
そもそも俺はプログラムに向いているのか。
090407-adobe-flex3-help-style.jpg

スタイルの継承順序

Flex がスタイルを探す順序を理解することは、どのスタイルプロパティがどのコントロールに適用されるのかを把握するために重要です。

参照元:Adobe Flex 3スタイルの継承について

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
width="150" height="140"
viewSourceURL="src/StylesSetStyle/index.html"
>
<mx:Script>
<![CDATA[
private function initVBox():void
{
myVBox2.setStyle("paddingTop", 12);
myVBox2.setStyle("paddingBottom", 12);
}

]]>
</mx:Script>

<mx:VBox borderStyle="solid">
<mx:Button label="Submit"/>

</mx:VBox>
<mx:VBox
id="myVBox2" borderStyle="solid"
paddingTop="12" paddingBottom="12"
initialize="initVBox();"
>
<mx:Button label="Submit"/>
</mx:VBox>
</mx:Application>

Adobeより引用・転載メモ
http://www.adobe.com/jp/devnet/flex/quickstart/styling_components/
<mx:Script>
private var cfDefaultTemplate:ClassFactory = new ClassFactory();

private function init():Void{
    cfDefaultTemplate.item = template01;
    cfDefaultTemplate.newInstance;

}

</mx:Script>


<mx:List
    id="idTemplate"
    width="300"
    initalize="init()"
>

</mx:List>
ActionScript3で、以下の様にクロージャでインスタンスを生成した場合。 メモリリークが起こる(生成されたインスタンスの親をremoveしてもガーベッジコレクションの対象とならない)のか?

public function init():Boolean {

    myObject.addEventListener(MouseEvent.CLICK, onMouseClick(templateName));

    return true;
}

private function onMouseClick(templateName:Class):Function{
    return function(e:MouseEvent):void{

        onClickRemove(null);
        // ClassFactory
        var _classFactory:ClassFactory = new ClassFactory();

        // load template class file
        _classFactory.generator = templateName;

        // addChild
        caLayout.addChild(_classFactory.newInstance() as DisplayObject);

    }
}
private function onClickRemove(e:MouseEvent):void{
    myObject.removeAllChildren();
}

caLayout.addChild(_classFactory.newInstance() as DisplayObject);

のところで、生成されたオブジェクトが消えないのが問題。オブジェクト毎カプセル化?してるらしく動作が渋い。
とりあえずボタンをクリックしまくるとメモリがアレよアレよと言う間に増えていって困った。

IMAJUKさんの所に詳しくエントリされているので見てみること
http://www.imajuk.com/blog/archives/2008/04/post_3.html

http://livedocs.adobe.com/flex/3_jp/html/help.html?content=cellrenderer_4.html

テンプレmxmlを上記の方法で読み込む
それをClassFactoryでインスタンス化?して、データプロバイダオブジェクトにぶち込むと
テンプレmxmlのGUIのリストを作れる。


ClassFactoryのリファ
http://livedocs.adobe.com/flex/3_jp/langref/index.html

これじゃわからなさ杉。


更新してなかったらページランクさがった\(^o^)/
GACより引用

質問 000 saya [UA] 2009-01-06 16:41
phase1のloadClipの2番目の引数を_rootの文字列だと
正常にloadB.swfが読み込まれます。
phase2だと読込みは行ったみたいですが画面が真っ白の状態
になります。

■phase1
next_btn.onRelease = function():Void
{
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip("loadB.swf", "_root");
}
■phase2
next_btn.onRelease = function():Void
{
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip("loadB.swf", _root);
}

Flashのヘルプによると、loadClipの2番目の引数には
ムービークリップのターゲットパス、またはムービーのロード先となる、Flash Player のレベルを指定する整数となっているのですが文字列の
"_root"で正常に読み込まれているのに対して、movieClipのターゲットパス
を指定している_rootは何故、真っ白の画面が表示されるのでしょうか?

分かる方がいれば教えていただけないでしょうか。

環境 Windows2000, Flash8, FlashPlayer10
引用終了


プログラム上の都合なのではないかなと思います。

① loadClip("hoge.swf", "_root");
② loadClip("hoge.swf", _root);

AS2では_root[hogeInstance]として、インスタンスにアクセスすることが出来ます。
loadClip関数を作る場合、文字列にしてしまえば、objSwfPlayer["_root"]として、_rootにアクセスすることが出来るからではないでしょうか。

_rootは変数の様に振る舞い、その中身が関数に直接飛ばされます。当然不明なオブジェクトしか示してないので、undefになります。
undefになっているので、真っ白のままです。

また、_rootは_rootオブジェクトのターゲットパス用の予約語なので、引数に用いてしまうと問題が生じてしまうかもしれません。。
あくまで私の想像で、これが正しいとは限りませんが、ASの開発者も同じ事を考えた末だと思いますがどうなんでしょうね。
ただ、私がmclクラスを作る場合でも同じようにやると思いました。
扱いやすいですしね!

間違っていたらすみません。