這個例子主要是向用戶展示,如何通過FlasCC提供的API,來操作AS3中的運行時庫。 包括stage,sprite等。
#include <vector>
#include <AS3/AS3.h>
#include <Flash++.h>
Flash 11.4時提供了一個基于工作線程的并發模型。這使得多個工作線程幾乎可以同時訪問Flash的API,只有一個限制就是,多個工作線程的對象不可以相互傳遞。工作線程之間的通信必須通過一個特殊的機制MessageChannel,或者在Flash 11.5后,可以使用共享的ByteArray進行通信。
Flash++這個頭文件提供了兩組Flash API的綁定。一是Flash中的UI工作線程的對象,另一個就是一個屬于一個工作線程的本地對象。
當使用“ui”相關的屬性來訪問時,這些方法的調用會被阻塞,直到它可以被主工作線程服務并調用CModule.serviceUIRequests() (這一般情況下是被EnterFrame或者在一個timer中被處理)
using namespace AS3::ui;
int main()
{
//取得當前舞臺的引用
flash::display::Stage stage = internal::get_Stage();
//我們用一個C++ VECTOR來裝Sprite引用
std::vector<flash::display::Sprite> sprites;
int numCircles = 10;
for(int i=0; i<numCircles; i++) {
// 新建一個Sprite
flash::display::Sprite mySprite = flash::display::Sprite::_new();
//訪問它們的 graphics屬性,然后,我們用來繪制
flash::display::Graphics graphics = mySprite->graphics;
//繪制實心圓
graphics->beginFill(0xff00ff, 0.5);
graphics->drawCircle(0.0, 0.0, 30.0);
graphics->endFill();
// 保存下來
sprites.push_back(mySprite);
}
// 添加到舞臺
for(int i=0; i<numCircles; i++) {
// 修改位置
flash::display::Sprite s = sprites[i];
s->x = i * 25;
s->y = i * 25;
//添加進舞臺
stage->addChild(s);
}
}
來張圖吧,我們終于可以看見東西了。
