我有这段代码:
package graphics {
import flash.display.Sprite;
import flash.events.*;
public class Ball extends Sprite {
public function Ball(_stage){
_stage.addChild(this);
drawBall();
}
private function drawBall(){
graphics.beginFill(0x0000CC);
graphics.lineStyle(2,0x000000,1);
graphics.drawCircle(0,0,10);
graphics.endFill();
}
}
}
增加:
以及我传递给mxmlc的课程:
package {
import flash.display.Sprite;
import graphics.*;
[SWF(width='1024', height='768', backgroundColor='#FFFFFF', frameRate='30')]
public class Application extends Sprite {
public function Application(){
var ball:Ball = new Ball(this);
}
}
}
除了编译时,我收到以下错误:
ball.as(11): col: 14 Error: Call to a possibly undefined method beginFill.
graphics.beginFill(0x0000CC);
^
与其他三个graphics.x()调用一起。
我可能在这里做错了,但我不知道是什么。你呢?
答案 0 :(得分:2)
只需使用 this.graphics.method 即可避免程序包名称造成的混淆。
修改 - 评论后。
经过一些麻烦之后,似乎虽然this.graphics跟踪了正确的Graphics对象,但是在Ball类中查看了this.graphics.method。不知道是什么混淆了这个,但它可以通过简单的铸造来解决。
package graphics {
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.*;
public class Ball extends Sprite {
public function Ball(_stage) {
_stage.addChild(this);
drawBall();
}
private function drawBall() {
var g:Graphics = this.graphics as Graphics;
g.beginFill(0x0000CC);
g.lineStyle(2,0x000000,1);
g.drawCircle(0,0,10);
g.endFill();
}
}
}
祝你好运
答案 1 :(得分:1)
我担心问题必须在您的代码中的其他地方。如果我把你的课程清理干净,那么就这样编译:
package
{
import flash.display.Sprite;
public class Ball extends Sprite
{
public function Ball()
{
drawBall();
}
private function drawBall():void
{
graphics.beginFill(0x0000CC);
graphics.lineStyle(2,0x000000,1);
graphics.drawCircle(0,0,10);
graphics.endFill();
}
}
}
$ mxmlc Ball.as Loading configuration file [...]/flex-config.xml /private/tmp/actionscript/Ball.swf (666 bytes)
它在屏幕的左上角绘制一个蓝色的球。因此,graphics
的问题必须与此处未显示的代码相关。
修改:根据新信息:
类graphics
的命名空间Ball
与属性名称图形冲突。您需要重命名包及其所在的目录。
答案 2 :(得分:0)
你的班级无法将自己添加到舞台上。在将其添加到显示列表之前,它没有引用该阶段。您的应用程序类需要创建球并将其添加到舞台上。 此外,它只是舞台,而不是_stage。