作者skylight68 ()
看板Flash
標題[問題] 出現錯誤
時間Sun Jan 24 15:43:10 2010
不好意思,學了許久的flash始終無法理解一些原理 最近碰上問題 只好上來麻
煩大家。目前正在看一本書 也照他書上的下去寫 但是卻出現錯誤 仔細看了一
下也找不出問題在那 主要的問題如下:
Ball.as
package {
import flash.display.Sprite;
public class Ball extends Sprite {
private var radius:Number;
private var color:uint;
public var vx:Number = 0;
public var vy:Number = 0;
public var mass:Number = 1;
public function Ball(radius:Number=40, color:uint=0xff0000) {
this.radius = radius;
this.color = color;
init();
}
public function init():void {
graphics.beginFill(color);
graphics.drawCircle(0, 0, radius);
graphics.endFill();
}
}
}
也有宣告 radius
可是在Billiard1的執行的時候卻出現無法存取的屬性radius
在這裡 private var ball0:Ball; 的時候不是宣告了ball0:Ball了
因此可以提取Ball(radius:Number=40, color:uint=0xff0000)
可是卻不行 於是我就把Billiard1裡的
if(Math.abs(dist) < ball0.radius + ball1.radius)
改成
if(Math.abs(dist) < 50)
就沒問題了。雖然有看了一些書 但對於oop的原理還是一知半解 只好在這
裡麻煩高手。
補上檔案
http://rapidshare.de/files/49046069/____.rar.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.130.71
※ 編輯: skylight68 來自: 61.228.130.71 (01/24 15:44)
→ skylight68:喔喔!檔案裡忘了把onEnterFrame改掉了 01/24 15:46
※ 編輯: skylight68 來自: 61.228.130.71 (01/24 17:51)
→ aquarianboy:你把radius設定成private了,其實錯誤訊息就有寫囉 01/24 19:28
→ aquarianboy:Attempted access of inaccessible property radius 01/24 19:29
→ aquarianboy:另外提醒一下,記得養成程式碼縮排的習慣,會有幫助的 01/24 19:31
→ aquarianboy:補充一下,private method/property只能在類別內被存取 01/24 19:35
→ aquarianboy:ball0.radius <-依你的寫法這樣拿不到private的radius 01/24 19:37
→ skylight68:感謝板大的指導 剛試了一下就成功了 那看來是書上寫錯 01/24 20:12
→ skylight68:了 改成public var radius:Number就ok了 01/24 20:13
→ skylight68:了 再加上自已的經驗不足所以沒往這方面去思考。 01/24 20:15