みぃお@PMです。
AS3でスレッドことそうめんで格闘してみた。
しかしながら、まだシングルスレッド状態(笑)
以下ソース(エラー起こします)
メイン(flaファイル)new MenuMainFirst();
var obj:formatGlobalObject= new formatGlobalObject();
addChild(obj);
var t:MenuMain = new MenuMain(this);
t.start();
MenuMainFirst.aspackage
{//http://www.libspark.org/htdocs/as3/thread-files/document/
import flash.display.*;
import org.libspark.thread.Thread;
import org.libspark.thread.EnterFrameThreadExecutor;
public class MenuMainFirst extends Sprite
{
;
public function MenuMainFirst()
{
if (!Thread.isReady) {
Thread.initialize(new EnterFrameThreadExecutor());
}
}
}
}
formatGlobalObject.aspackage
{//http://www.libspark.org/htdocs/as3/thread-files/document/
import flash.display.*;
import org.libspark.thread.Thread;
import org.libspark.thread.EnterFrameThreadExecutor;
public class formatGlobalObject extends Sprite{
public var MenuButton:Array=new Array(5);
//画像を埋め込み
//メニューボタン
[Embed(source="./emb_images/MenuButton1.png")] public var MenuButton1Class:Class;
[Embed(source="./emb_images/MenuButton2.png")] public var MenuButton2Class:Class;
[Embed(source="./emb_images/MenuButton3.png")] public var MenuButton3Class:Class;
[Embed(source="./emb_images/MenuButton4.png")] public var MenuButton4Class:Class;
[Embed(source="./emb_images/MenuButton5.png")] public var MenuButton5Class:Class;
//ViewArea用
public var ViewArea:Array=new Array(5);
[Embed(source="./emb_images/ViewArea1.png")] public var ViewArea1Class:Class;
[Embed(source="./emb_images/ViewArea2.png")] public var ViewArea2Class:Class;
[Embed(source="./emb_images/ViewArea3.png")] public var ViewArea3Class:Class;
[Embed(source="./emb_images/ViewArea4.png")] public var ViewArea4Class:Class;
[Embed(source="./emb_images/ViewArea5.png")] public var ViewArea5Class:Class;
public var item_num:uint=5;//要素数を入れてね
public var cnt:uint=0;//システム用。
public function formatGlobalObject(){
//配列へ
//インスタンス化
MenuButton[1]=new MenuButton1Class();
MenuButton[2]=new MenuButton2Class();
MenuButton[3]=new MenuButton3Class();
MenuButton[4]=new MenuButton4Class();
MenuButton[5]=new MenuButton5Class();
//インスタンス化
ViewArea[1]=new ViewArea1Class();
ViewArea[2]=new ViewArea2Class();
ViewArea[3]=new ViewArea3Class();
ViewArea[4]=new ViewArea4Class();
ViewArea[5]=new ViewArea5Class();
}
public function setMenuButton(value)
{
addChild(MenuButton[value]);
MenuButton[value].alpha=1;
MenuButton[value].x=(160*(value-1));
MenuButton[value].x+=30;
MenuButton[value].y=320;
}
public function setViewArea(value)
{
MovieClip(root).addChild(ViewArea[value]);
}
}
}
MenuMain.aspackage
{
//http://www.libspark.org/htdocs/as3/thread-files/document/
import flash.display.*;
import org.libspark.thread.Thread;
import flash.display.DisplayObjectContainer;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.errors.IOError;
import org.libspark.thread.Thread;
import org.libspark.thread.threads.net.URLLoaderThread;
import org.libspark.thread.utils.Executor;
import org.libspark.thread.utils.ParallelExecutor;
public class MenuMain extends Thread
{
public var st;
public var threadExec:ParallelExecutor = new ParallelExecutor();
public function MenuMain(obj:MovieClip)
{//ルートオブジェクトにアクセスできるようにする
st=obj;
}
//public var obj:formatGlobalObject = new formatGlobalObject();
override protected function run():void
{
next(formatMenu);
}
private function formatMenu():void
{
trace("formatMenuへ繊維");
//ボタン初期化
st.obj.cnt++;//最初にカウント
next(MenuListMoveFirst);
}
private function MenuListMoveFirst():void
{//メニューボタンの初期演出用
//画像をaddChild
st.obj.setMenuButton(st.obj.cnt);
//フェードイン
threadExec.addThread(new Fade(st.obj.MenuButton[st.obj.cnt]));
threadExec.start();
threadExec.join();
sleep(150);//0.25秒待機
if(st.obj.cnt
{
next(MenuViewAreaMoveFirst);//まだ画像があれば表示エリア用に繊維
}
else
{
trace("5つ表示完了したよ");
}
}
private function MenuViewAreaMoveFirst():void
{//メニューで選択した項目をViewAreaに表示する用の初期処理
if(st.obj.cnt
{
trace("大きいの");
next(formatMenu);//画像があれば再帰処理
}
}
}
}
Fade.as(格闘中)package
{ //http://www.two-hearts.net/2009/05/thread.html
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import org.libspark.thread.Thread;
import org.libspark.thread.threads.tweener.TweenerThread;
import flash.display.*;
public class Fade extends Thread
{
public var _contianer:Object;
public function Fade(container)
{
_contianer = container;
}
/**
* 画像のフェードイン
*/
override protected function run():void
{
_contianer.alpha+=0.01;
sleep(10);
}
}
}
私書箱 札幌で私設私書箱・転送電話をお探しなら来店不要ですぐにお申し込みいただけます
マイポスト39