在開發flash 的時候,用多個場景可以讓版面和時間軸保持乾乾淨淨~
可是今天發現不同場景互相呼叫 function 的時候,被呼叫的 function 會跑到呼叫者的場景
而不同場景上的元件是不能互相存取的! (這個部分是經驗而已,有誤請不吝指正:D)
以下舉個例子:
scene1 - function1 { call mc1; call function2; }
\ mc1
scene2 - function2 { call mc2; }
\ mc2
依此例來討論,function1 呼叫 function2 的時候, function2 會在 scene1 中被執行
如此一來就會發生錯誤,因為 scene1 中並沒有 mc2
解決辦法:
在 function2 第一行插入 gotoAndStop(1, "scene2");
則會先跳轉到 scene2 後才會執行接下來的程式碼 就不會出現錯誤
另外附上從 ActionScript 3.0 語言和組件參考 中列出場景的範例
for (var i:uint = 0; i < MovieClip(root).scenes.length; i++)
{
var scene:Scene = MovieClip(root).scenes[i];
trace("scene " + scene.name + ": " + scene.numFrames + " frames");
}
星期一, 8月 09, 2010
星期五, 7月 09, 2010
var_export,var_dump(),print_r()
2009-03-18 10:01
var_export ( mixed expression [, bool return] ) 此函數返回關於傳遞給該函數的變量的結構信息,它和var_dump()類似, 不同的是其返回的表示是合法的 PHP 代碼。 您可以通過將函數的第二個參數設置為 TRUE,從而返回變量的表示。 $a = array (1, 2, array ("a", "b", "c")); var_export($a); 輸出: array ( 0 => 1, 1 => 2, 2 => array ( 0 => 'a', 1 => 'b', 2 => 'c', ), ) var_dump ( mixed expression [, mixed expression [, ...]] ) 此函數顯示關於一個或多個表達式的結構信息,包括表達式的類型與值。數組將遞歸展開值,通過縮進顯示其結構。 $a = array (1, 2, array ("a", "b", "c")); var_dump ($a); 輸出: array(3) { [0]=> int(1) [1]=> int(2) [2]=> array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } } $b = 3.1;$c = TRUE; var_dump($b,$c); 輸出: float(3.1) bool(true) print_r()類似var_dump |
星期五, 7月 02, 2010
XNA 碰撞偵測、反彈
延續上一篇
if (squRect.Intersects(boardRectTop))
{
move.Y *= -1; ;
}
if (squRect.Intersects(boardRectBottom))
{
move.Y *= -1;
}
if (squRect.Intersects(boardRectLeft))
{
move.X *= -1;
}
if (squRect.Intersects(boardRectRight))
{
move.X *= -1;
}
可以做個class比較方便
XNA 滑鼠拉動投擲
UPDATA:
MouseState preMouseState, mouseState;
bool flag = false;
Vector2 move;
mouseState = Mouse.GetState();
Rectangle squRect = new Rectangle((int)position.X, (int)position.Y, square.Width, square.Height);
Rectangle mouseRect = new Rectangle(mouseState.X, mouseState.Y, 0, 0);
if (squRect.Intersects(mouseRect) && mouseState.LeftButton == ButtonState.Pressed && flag == false) //squRect.Intersects(mouseRect) : //滑鼠點擊的地方是否在方框內
{
preMouseState = mouseState;
flag = true;
}
if (mouseState.LeftButton == ButtonState.Released && flag == true) //已放開且上個狀態是按下
{
move.X = (mouseState.X - preMouseState.X) * 0.3F;
move.Y = (mouseState.Y - preMouseState.Y) * 0.3F;
flag = false;
}
//move是加速度, position是square的座標
position.X += move.X;
position.Y += move.Y;
//漸變阻尼
if (position.Y >= height - square.Height)
moveX *= 0.95;
else
moveX *= 0.995; //碰到地板阻尼較大
moveY *= 0.98;
MouseState preMouseState, mouseState;
bool flag = false;
Vector2 move;
mouseState = Mouse.GetState();
Rectangle squRect = new Rectangle((int)position.X, (int)position.Y, square.Width, square.Height);
Rectangle mouseRect = new Rectangle(mouseState.X, mouseState.Y, 0, 0);
if (squRect.Intersects(mouseRect) && mouseState.LeftButton == ButtonState.Pressed && flag == false) //squRect.Intersects(mouseRect) : //滑鼠點擊的地方是否在方框內
{
preMouseState = mouseState;
flag = true;
}
if (mouseState.LeftButton == ButtonState.Released && flag == true) //已放開且上個狀態是按下
{
move.X = (mouseState.X - preMouseState.X) * 0.3F;
move.Y = (mouseState.Y - preMouseState.Y) * 0.3F;
flag = false;
}
//move是加速度, position是square的座標
position.X += move.X;
position.Y += move.Y;
//漸變阻尼
if (position.Y >= height - square.Height)
moveX *= 0.95;
else
moveX *= 0.995; //碰到地板阻尼較大
moveY *= 0.98;
星期五, 6月 04, 2010
Class的const對象與const成員函數
遇到的問題:
程式碼:
IntArray(const IntArray ©)
{
array = new int[copy.getSize()];
for(int i=0;i<copy.getSize();i++)
array[i] = copy[i];
size = copy.getSize();
}
輸出:
1>.\test06.cpp(33) : error C2662: 'IntArray::getSize' : 無法將 'this' 指標從 'const IntArray' 轉換成 'IntArray &'
1> 轉換遺失限定詞
1>.\test06.cpp(34) : error C2662: 'IntArray::getSize' : 無法將 'this' 指標從 'const IntArray' 轉換成 'IntArray &'
1> 轉換遺失限定詞
1>.\test06.cpp(35) : error C2678: 二元運算子 '[' : 找不到使用左方運算元型別 'const IntArray' 的運算子 (或是沒有可接受的轉換)
1> .\test06.cpp(65): 可能是 'int &IntArray::operator [](int)'
1> 當嘗試符合引數清單 '(const IntArray, int)' 時
1>.\test06.cpp(36) : error C2662: 'IntArray::getSize' : 無法將 'this' 指標從'const IntArray' 轉換成 'IntArray &'
1> 轉換遺失限定詞
如果將程式改為
IntArray(IntArray ©)
{
array = new int[copy.getSize()];
for(int i=0;i<copy.getSize();i++)
array[i] = copy[i];
size = copy.getSize();
}
或是
IntArray(const IntArray ©)
{
array = new int[copy.size];
for(int i=0;i<copy.size;i++)
array[i] = copy.array[i];
size = copy.size;
}
就沒有問題
size, getSize() 皆為 public member
getSize() 只有return size而已
有overload operator[]
想問的是為什麼加了const後就只能用member variable而不能用member function?
推 littleshan:getSize() {...} 要改成 getSize() const {...} 06/03 10:04
→ littleshan:原因...請翻書 (煙 06/03 10:04
推 ilovebbs:const對象只能使用const成員函數~ 06/03 10:43
另外查的資料
擴擴咱 - C++ 學習筆記:長相怪異的 const 成員函數
程式碼:
IntArray(const IntArray ©)
{
array = new int[copy.getSize()];
for(int i=0;i<copy.getSize();i++)
array[i] = copy[i];
size = copy.getSize();
}
輸出:
1>.\test06.cpp(33) : error C2662: 'IntArray::getSize' : 無法將 'this' 指標從 'const IntArray' 轉換成 'IntArray &'
1> 轉換遺失限定詞
1>.\test06.cpp(34) : error C2662: 'IntArray::getSize' : 無法將 'this' 指標從 'const IntArray' 轉換成 'IntArray &'
1> 轉換遺失限定詞
1>.\test06.cpp(35) : error C2678: 二元運算子 '[' : 找不到使用左方運算元型別 'const IntArray' 的運算子 (或是沒有可接受的轉換)
1> .\test06.cpp(65): 可能是 'int &IntArray::operator [](int)'
1> 當嘗試符合引數清單 '(const IntArray, int)' 時
1>.\test06.cpp(36) : error C2662: 'IntArray::getSize' : 無法將 'this' 指標從'const IntArray' 轉換成 'IntArray &'
1> 轉換遺失限定詞
如果將程式改為
IntArray(IntArray ©)
{
array = new int[copy.getSize()];
for(int i=0;i<copy.getSize();i++)
array[i] = copy[i];
size = copy.getSize();
}
或是
IntArray(const IntArray ©)
{
array = new int[copy.size];
for(int i=0;i<copy.size;i++)
array[i] = copy.array[i];
size = copy.size;
}
就沒有問題
size, getSize() 皆為 public member
getSize() 只有return size而已
有overload operator[]
想問的是為什麼加了const後就只能用member variable而不能用member function?
推 littleshan:getSize() {...} 要改成 getSize() const {...} 06/03 10:04
→ littleshan:原因...請翻書 (煙 06/03 10:04
推 ilovebbs:const對象只能使用const成員函數~ 06/03 10:43
另外查的資料
擴擴咱 - C++ 學習筆記:長相怪異的 const 成員函數
總之就是…
1. const對象只能使用const成員函數
2. const成員函數範例 void myClass::foobar() const {}
3. 其實「const 成員函式」的道理非常簡單,const加在函式後面的意思就是「限定一個函數只能取得資料,不能改變資料」。物件導向語言裡面會看到getter函式和setter函式概念的設計,他們的功能主要是讓私有變數可以用公有函數來存取 (在AS3.0裡甚至可以像物件屬性
星期六, 5月 01, 2010
C# 應用程式設定檔(app.config) & 縮小到右下(NotifyIcon) & Timer
using System.Configuration
讀取設定檔需要的
不過可以用app.config就好
http://www.dotblogs.com.tw/yc421206/archive/2009/04/14/8000.aspx
EX:
using getFlowForm.Properties; //使用這個應用程式的命名空間
然後用
直接讀寫
--
System.Timers.timer 和System.Windows.Forms.Timer不同
前者提供較多選項,而後者則較簡易
前者原本就預設會重複執行,要關閉則用Enable = false;
後者則否,需要AutoReset = true;
--
將程式置於右下角的工具列
NotifyIcon
http://www.dotblogs.com.tw/chou/archive/2009/02/25/7284.aspx
讀取設定檔需要的
不過可以用app.config就好
http://www.dotblogs.com.tw/yc421206/archive/2009/04/14/8000.aspx
EX:
using getFlowForm.Properties; //使用這個應用程式的命名空間
然後用
myIP = Settings.Default.IP;
Settings.Default.IP = "0.0.0.0";直接讀寫
--
System.Timers.timer 和System.Windows.Forms.Timer不同
前者提供較多選項,而後者則較簡易
前者原本就預設會重複執行,要關閉則用Enable = false;
後者則否,需要AutoReset = true;
--
將程式置於右下角的工具列
NotifyIcon
http://www.dotblogs.com.tw/chou/archive/2009/02/25/7284.aspx
訂閱:
文章 (Atom)