[問題] 出現錯誤

看板Flash作者時間16年前 (2010/01/24 15:43), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串1/1
不好意思,學了許久的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)

01/24 15:46, , 1F
喔喔!檔案裡忘了把onEnterFrame改掉了
01/24 15:46, 1F
※ 編輯: skylight68 來自: 61.228.130.71 (01/24 17:51)

01/24 19:28, , 2F
你把radius設定成private了,其實錯誤訊息就有寫囉
01/24 19:28, 2F

01/24 19:29, , 3F
Attempted access of inaccessible property radius
01/24 19:29, 3F

01/24 19:31, , 4F
另外提醒一下,記得養成程式碼縮排的習慣,會有幫助的
01/24 19:31, 4F

01/24 19:35, , 5F
補充一下,private method/property只能在類別內被存取
01/24 19:35, 5F

01/24 19:37, , 6F
ball0.radius <-依你的寫法這樣拿不到private的radius
01/24 19:37, 6F

01/24 20:12, , 7F
感謝板大的指導 剛試了一下就成功了 那看來是書上寫錯
01/24 20:12, 7F

01/24 20:13, , 8F
了 改成public var radius:Number就ok了
01/24 20:13, 8F

01/24 20:15, , 9F
了 再加上自已的經驗不足所以沒往這方面去思考。
01/24 20:15, 9F
文章代碼(AID): #1BM_eI7Y (Flash)
文章代碼(AID): #1BM_eI7Y (Flash)