AS3 API:http://www.smartfoxserver.com/docs/docPages/as3/html/
Delete Room Variables
var varList:Array = []
var roomVar:Object = {name:"test", value:null}
varList.push(roomVar)
smartFox.setRoomVariables(varList)
Delete Room Variables
var varList:Array = []
var roomVar:Object = {name:"test", value:null}
varList.push(roomVar)
smartFox.setRoomVariables(varList)
Delete Room Variables
var varList:Array = []
var roomVar:Object = {name:"test", value:null}
varList.push(roomVar)
smartFox.setRoomVariables(varList)
總之,有三種用法:
1.LoaderContext.applicationDomain = ApplicationDomain.currentDomain;
2.LoaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
3.LoaderContext.applicationDomain = new ApplicationDomain();
總之,有三種用法:
1.LoaderContext.applicationDomain = ApplicationDomain.currentDomain;
2.LoaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
3.LoaderContext.applicationDomain = new ApplicationDomain();
總之,有三種用法:
1.LoaderContext.applicationDomain = ApplicationDomain.currentDomain;
2.LoaderContext.applicationDomain = new
ApplicationDomain(ApplicationDomain.currentDomain);
3.LoaderContext.applicationDomain = new ApplicationDomain();
呼叫
1.ApplicationDomain.currentDomain.getDefinition("Greeter"); //ApplicatinDomain為靜態物件
2.loaderInfo.applicationDomain.getDefinition("Greeter"); //loaderInfo為load時所傳入之LoaderInfo物件
後,就可以使用Greeter類別。
如要獲得新的Greeter物件可以用
1.ApplicationDomain.currentDomain.getDefinition("Greeter") as Class;
2.loaderInfo.applicationDomain.getDefinition("Greeter") as Class;
總之,有三種用法:
1.LoaderContext.applicationDomain = ApplicationDomain.currentDomain;
2.LoaderContext.applicationDomain = new
ApplicationDomain(ApplicationDomain.currentDomain);
3.LoaderContext.applicationDomain = new ApplicationDomain();
呼叫
1.ApplicationDomain.currentDomain.getDefinition("Greeter"); //ApplicatinDomain為靜態物件
2.loaderInfo.applicationDomain.getDefinition("Greeter"); //loaderInfo為load時所傳入之LoaderInfo物件
後,就可以使用Greeter類別。
如要獲得新的Greeter物件可以用
1.ApplicationDomain.currentDomain.getDefinition("Greeter") as Class;
2.loaderInfo.applicationDomain.getDefinition("Greeter") as Class;
下列範例會刪除物件的屬性:
// create the new object "account"
var account:Object = new Object();
// assign property name to the account
account.name = "Jon";
// delete the property
delete account.name;
trace(account.name); // undefined
// delete a nonexistent property
var fooDeleted:Boolean = delete account.foo;
trace(fooDeleted); // true
下列範例會刪除陣列元素的值,length
屬性的值則不會變更:
var my_array:Array = new Array();
my_array[0] = "abc"; // my_array.length == 1
my_array[1] = "def"; // my_array.length == 2
my_array[2] = "ghi"; // my_array.length == 3
// my_array[2] is deleted, but Array.length is not changed
delete my_array[2];
trace(my_array.length); // 3
trace(my_array); // abc,def,
下列範例說明如何將 delete
傳回的 Boolean
值當做條件,以供將來執行程式碼時使用。請注意,如果某個項目已遭到刪除,則針對該項目再次呼叫 delete
將會傳回 false
¡C
var my_array:Array = [ "abc", "def", "ghi" ];
var deleteWasSuccessful:Boolean
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[1];
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[2];
trace(my_array) // outputs: undefined,undefined,ghi
下列範例會刪除物件的屬性:
// create the new object "account"
var account:Object = new Object();
// assign property name to the account
account.name = "Jon";
// delete the property
delete account.name;
trace(account.name); // undefined
// delete a nonexistent property
var fooDeleted:Boolean = delete account.foo;
trace(fooDeleted); // true
下列範例會刪除陣列元素的值,length
屬性的值則不會變更:
var my_array:Array = new Array();
my_array[0] = "abc"; // my_array.length == 1
my_array[1] = "def"; // my_array.length == 2
my_array[2] = "ghi"; // my_array.length == 3
// my_array[2] is deleted, but Array.length is not changed
delete my_array[2];
trace(my_array.length); // 3
trace(my_array); // abc,def,
下列範例說明如何將 delete
傳回的 Boolean
值當做條件,以供將來執行程式碼時使用。請注意,如果某個項目已遭到刪除,則針對該項目再次呼叫 delete
將會傳回 false
¡C
var my_array:Array = [ "abc", "def", "ghi" ];
var deleteWasSuccessful:Boolean
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[1];
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[2];
trace(my_array) // outputs: undefined,undefined,ghi
您可以使用 Point 類別的 polar() 方法,依特定的角度將顯示物件移動特定的距離。例如,下列程式碼會將 myDisplayObject 物件依 60 度角移動 100 個像素:
import flash.geom.*;
var distance:Number = 100;
var angle:Number = Math.PI/180 * 30; //朝30度方向移動100px
var translatePoint:Point = Point.polar(distance, angle);
myDisplayObject.x += translatePoint.x;
myDisplayObject.y += translatePoint.y;
可以少寫一點了XD
您可以使用 Point 類別的 polar() 方法,依特定的角度將顯示物件移動特定的距離。例如,下列程式碼會將 myDisplayObject 物件依 60 度角移動 100 個像素:
import flash.geom.*;
var distance:Number = 100;
var angle:Number = Math.PI/180 * 30; //朝30度方向移動100px
var translatePoint:Point = Point.polar(distance, angle);
myDisplayObject.x += translatePoint.x;
myDisplayObject.y += translatePoint.y;
可以少寫一點了XD
呼呼~
總算搞定了~
用到了不少東西:
1.ByteArray
2.Flex Framework 的 Base64Encoder/Decoder
3.registerClassAlias
使用時有以下限制:
1.不能儲存constructor必需參數的class,否則byteArray.readObject時會出錯。constructor包括需儲存class的任一內容class。
2.只能儲存public的variables(任何function皆可正常運作)
狀態儲存設計策略:
另設SaveData物件,避免使用private/protected的variables。如需使用,必須與所要儲存的資料無關。
獲益匪淺~
呼呼~
總算搞定了~
用到了不少東西:
1.ByteArray
2.Flex Framework 的 Base64Encoder/Decoder
3.registerClassAlias
使用時有以下限制:
1.不能儲存constructor必需參數的class,否則byteArray.readObject時會出錯。constructor包括需儲存class的任一內容class。
2.只能儲存public的variables(任何function皆可正常運作)
狀態儲存設計策略:
另設SaveData物件,避免使用private/protected的variables。如需使用,必須與所要儲存的資料無關。
獲益匪淺~
要存取Loader讀進來的東西的屬性,要等到收到Event.COMPLETE事件後才能讀,否則只會讀到原本的0(什麼都沒有當然是0)。
而event listener則須設在Loader.contentLoaderInfo。
Loader.fla |
import flash.display.Loader; import flash.net.URLLoader; import flash.events.*; var _loader:Loader=new Loader(); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadingComplete); //_loader.addEventListener(Event.COMPLETE,onLoadingComplete); // Doesn't work _loader.load(new URLRequest("http://shoujomagic.game-host.org/touhou/imgs/yuyuko2.jpg")); addChild(_loader);
trace(_loader.width, _loader.height); //0 0 function onLoadingComplete(evt:Event) { trace(_loader.width, _loader.height); //400 491 } |
要存取Loader讀進來的東西的屬性,要等到收到Event.COMPLETE事件後才能讀,否則只會讀到原本的0(什麼都沒有當然是0)。
而event listener則須設在Loader.contentLoaderInfo。
Loader.fla |
import flash.display.Loader; import flash.net.URLLoader; import flash.events.*; var _loader:Loader=new Loader(); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadingComplete); //_loader.addEventListener(Event.COMPLETE,onLoadingComplete); // Doesn't work _loader.load(new URLRequest("http://shoujomagic.game-host.org/touhou/imgs/yuyuko2.jpg")); addChild(_loader);
trace(_loader.width, _loader.height); //0 0 function onLoadingComplete(evt:Event) { trace(_loader.width, _loader.height); //400 491 } |
兩張白蓮的vocal~
01. Heat of Bramble
法界の火 / 東方星蓮船
Arranged by Tsukasa
02. Hydrangea
感情の摩天楼 / 東方星蓮船
Arranged by Tsukasa
Vocal and Lyrics : 三澤 秋
03. Anthurium Breakable
東方緋想天 / 東方緋想天
Arranged by Tsukasa
(Re-Collection from "EN")
04. Calamus Erection
平安のエイリアン / 東方星蓮船
Arranged by Lo-Fi Socks
05. Rosmarinus
クリスタライズシルバー / 東方妖々夢
Arranged by Tsukasa
Vocal and Lyrics : 佳織 みちる
Guitar : a2c
06. Datura Syndrome
少女さとり / 東方地霊殿
Arranged by Tsukasa
07. K Lobelia
恋色マスタースパーク / 東方永夜抄
Arranged by Tsukasa
08. Fragrant Olive
ほおずきみたいに紅い魂 / 東方紅魔郷
Arranged by Tsukasa
Vocal and Lyrics : 佐伯 佑佳
09. Cineraria
幽霊客船の時空を越えた旅 / 東方星蓮船
Arranged by ROSIVO (sonorounds)
10. Eleven Snowdrops
魔界地方都市エソテリア / 東方星蓮船
Arranged by Tsukasa
Title | Vocal | Lyrics | Arrange | |
01 | Emotional Rule | 仲村芽衣子 | 杉田さとみ | 五条下位 |
感情の摩天楼 ~ Cosmic Mind(東方星蓮船) | ||||
02 | Let me be with you | miko | miko | 五条下位 |
魔法少女達の百年祭~(東方紅魔郷) | ||||
03 | When Leaving | 美里 | Haruka | Masayoshi Minoshima |
亡き王女の為のセプテット(東方紅魔郷) | ||||
04 | Re:Production | 美里 | 杉田さとみ | 五条下位 |
ラストリモート(東方地霊殿) | ||||
05 | Forever cherryblossom | 坂上なち | やまざきさやか | 五条下位、琉姫アルナ |
幽雅に咲かせ、墨染の桜 ~ Border of Life(東方妖々夢) | ||||
06 | 紅染-benizome- | 美里 | 杉田さとみ | 五条下位 |
人恋し神様 ~ Romantic Fall(東方風神録) | ||||
07 | 二人繋ぐ道 | 結月そら | 結月そら | 五条下位 |
空の帰り道 ~ Sky Dream(東方星蓮船) | ||||
08 | 眠りし宝 | 美里 | 杉田さとみ | 五条下位 |
春の湊に(東方星蓮船 |
兩張白蓮的vocal~
01. Heat of Bramble
法界の火 / 東方星蓮船
Arranged by Tsukasa
02. Hydrangea
感情の摩天楼 / 東方星蓮船
Arranged by Tsukasa
Vocal and Lyrics : 三澤 秋
03. Anthurium Breakable
東方緋想天 / 東方緋想天
Arranged by Tsukasa
(Re-Collection from "EN")
04. Calamus Erection
平安のエイリアン / 東方星蓮船
Arranged by Lo-Fi Socks
05. Rosmarinus
クリスタライズシルバー / 東方妖々夢
Arranged by Tsukasa
Vocal and Lyrics : 佳織 みちる
Guitar : a2c
06. Datura Syndrome
少女さとり / 東方地霊殿
Arranged by Tsukasa
07. K Lobelia
恋色マスタースパーク / 東方永夜抄
Arranged by Tsukasa
08. Fragrant Olive
ほおずきみたいに紅い魂 / 東方紅魔郷
Arranged by Tsukasa
Vocal and Lyrics : 佐伯 佑佳
09. Cineraria
幽霊客船の時空を越えた旅 / 東方星蓮船
Arranged by ROSIVO (sonorounds)
10. Eleven Snowdrops
魔界地方都市エソテリア / 東方星蓮船
Arranged by Tsukasa
Title | Vocal | Lyrics | Arrange | |
01 | Emotional Rule | 仲村芽衣子 | 杉田さとみ | 五条下位 |
感情の摩天楼 ~ Cosmic Mind(東方星蓮船) | ||||
02 | Let me be with you | miko | miko | 五条下位 |
魔法少女達の百年祭~(東方紅魔郷) | ||||
03 | When Leaving | 美里 | Haruka | Masayoshi Minoshima |
亡き王女の為のセプテット(東方紅魔郷) | ||||
04 | Re:Production | 美里 | 杉田さとみ | 五条下位 |
ラストリモート(東方地霊殿) | ||||
05 | Forever cherryblossom | 坂上なち | やまざきさやか | 五条下位、琉姫アルナ |
幽雅に咲かせ、墨染の桜 ~ Border of Life(東方妖々夢) | ||||
06 | 紅染-benizome- | 美里 | 杉田さとみ | 五条下位 |
人恋し神様 ~ Romantic Fall(東方風神録) | ||||
07 | 二人繋ぐ道 | 結月そら | 結月そら | 五条下位 |
空の帰り道 ~ Sky Dream(東方星蓮船) | ||||
08 | 眠りし宝 | 美里 | 杉田さとみ | 五条下位 |
春の湊に(東方星蓮船 |
在child class的constructor中,一定要用super呼叫parent的constructor,否則會跑出"1203: 基底類別 Parent 中找不到預設的建構函式。"這樣的錯誤訊息。
另外,在child class中,就算用的是super,也只能呼叫parent class中設為protected 和 private 的 functions 和 variables。
Parent.as |
package{ |
Child.as |
package{ |
在child class的constructor中,一定要用super呼叫parent的constructor,否則會跑出"1203: 基底類別 Parent 中找不到預設的建構函式。"這樣的錯誤訊息。
另外,在child class中,就算用的是super,也只能呼叫parent class中設為protected 和 private 的 functions 和 variables。
Parent.as |
package{ |
Child.as |
package{ |
target 屬性target 對於複雜的 SWF 檔,特別是其中通常以較小子物件來裝飾的檔案,可能就不會經常使用 target |
也就是說,一個有好多元件的按鈕,適合用currentTarget;而單一的clip適合用target
target 屬性target 對於複雜的 SWF 檔,特別是其中通常以較小子物件來裝飾的檔案,可能就不會經常使用 target |
也就是說,一個有好多元件的按鈕,適合用currentTarget;而單一的clip適合用target
src:http://simplistika.com/super-explained/
super(arg1, arg2, ....): 呼叫parent class的constructor
super.[method](arg1, arg2, ...) :呼叫parent class的某個method
src:http://simplistika.com/super-explained/
super(arg1, arg2, ....): 呼叫parent class的constructor
super.[method](arg1, arg2, ...) :呼叫parent class的某個method
如果有在自身宣告或繼承有static的東西。
又在自身宣告另外一個一般的同名變數/方法,將以自身宣告的優先。也就是說static的那個就看不到了。
package
{
import flash.display.MovieClip;
public class StaticExample extends MovieClip
{
public function StaticExample()
{
var myExt:Extender = new Extender();
}
}
}
class Base
{
public static function calle(){trace("Static");}
public function calle(){trace("Regular");}
function Base(){
calle();
}
}
class Extender extends Base {}
如果有在自身宣告或繼承有static的東西。
又在自身宣告另外一個一般的同名變數/方法,將以自身宣告的優先。也就是說static的那個就看不到了。
package
{
import flash.display.MovieClip;
public class StaticExample extends MovieClip
{
public function StaticExample()
{
var myExt:Extender = new Extender();
}
}
}
class Base
{
public static function calle(){trace("Static");}
public function calle(){trace("Regular");}
function Base(){
calle();
}
}
class Extender extends Base {}
以下轉自adobe document
雖然靜態屬性不繼承,但它們是在定義該屬性之類別及該類別
之任何子類別的範圍鏈內,因此靜態屬性是同時位於其定義類別及任何子類別的「範圍中」。也就是說,靜態屬性可以在定義靜態屬性的類別主體及其任何子類別之
內直接存取。
下列範例修改了上一個範例中所定義的類別,以示範定義於 Base 類別中的靜態 test
變數是在 Extender 類別的範圍中。換句話說,Extender 類別可以存取靜態 test
變數,而不需要以定義 test 的類別名稱做為變數的前置詞。
package
{
import flash.display.MovieClip;
public class StaticExample extends MovieClip
{
public function StaticExample()
{
var myExt:Extender = new Extender();
}
}
}
class Base {
public static var test:String = "static";
}
class Extender extends Base
{
public function Extender()
{
trace(test); // output: static
}
}
以下轉自adobe document
雖然靜態屬性不繼承,但它們是在定義該屬性之類別及該類別
之任何子類別的範圍鏈內,因此靜態屬性是同時位於其定義類別及任何子類別的「範圍中」。也就是說,靜態屬性可以在定義靜態屬性的類別主體及其任何子類別之
內直接存取。
下列範例修改了上一個範例中所定義的類別,以示範定義於 Base 類別中的靜態 test
變數是在 Extender 類別的範圍中。換句話說,Extender 類別可以存取靜態 test
變數,而不需要以定義 test 的類別名稱做為變數的前置詞。
package
{
import flash.display.MovieClip;
public class StaticExample extends MovieClip
{
public function StaticExample()
{
var myExt:Extender = new Extender();
}
}
}
class Base {
public static var test:String = "static";
}
class Extender extends Base
{
public function Extender()
{
trace(test); // output: static
}
}