看板 Flash 關於我們 聯絡資訊
不好意思,學了許久的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