作者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)
1F:→ skylight68:喔喔!档案里忘了把onEnterFrame改掉了 01/24 15:46
※ 编辑: skylight68 来自: 61.228.130.71 (01/24 17:51)
2F:→ aquarianboy:你把radius设定成private了,其实错误讯息就有写罗 01/24 19:28
3F:→ aquarianboy:Attempted access of inaccessible property radius 01/24 19:29
4F:→ aquarianboy:另外提醒一下,记得养成程式码缩排的习惯,会有帮助的 01/24 19:31
5F:→ aquarianboy:补充一下,private method/property只能在类别内被存取 01/24 19:35
6F:→ aquarianboy:ball0.radius <-依你的写法这样拿不到private的radius 01/24 19:37
7F:→ skylight68:感谢板大的指导 刚试了一下就成功了 那看来是书上写错 01/24 20:12
8F:→ skylight68:了 改成public var radius:Number就ok了 01/24 20:13
9F:→ skylight68:了 再加上自已的经验不足所以没往这方面去思考。 01/24 20:15