flash as3.0中类修饰符internal问题

小弟刚学flash类编程在同一个文件夹内建立了两个文件第一个是Lei.as第二个是10.fla其中在Lei.as中输入package{importflash.displa... 小弟刚学flash类编程
在同一个文件夹内建立了两个文件
第一个是 Lei.as
第二个是 10.fla
其中在 Lei.as中输入
package
{
import flash.display.MovieClip
import flash.display.Graphics
internal class Lei extends MovieClip
{
public function Lei()
{
graphics.moveTo(100,100)
graphics.lineStyle(1,0x00ff00)
graphics.lineTo(400,400)
}

}

}
在 10.fla里面第一帧输入
var lei:Lei=new Lei()
this.addChild(lei)
本意是在舞台上画一条直线

但是运行后提示错误1046
除非把类修饰符internal改成public才可以正常运行,但是我的两个文件都保存在同一个文件见内啊,我看书上说可以定义为internal类型的。
这倒底是怎么回事啊?

哪位大虾能帮小弟一把。
展开
 我来答
小众喜好cj
2010-03-30 · TA获得超过871个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:0
展开全部
internal 声明的对象是只能在同一包内访问,默认路径不是一个包路径,也就是说,同样是在根目录下,并不能当做是在同一个包内部。你把这个类放到一个包里,然后用这个包中的另外一个public类调用,再用fla调用这个public类,就会发现没问题了。

说的明白点,你在根目录下建个文件夹,命名为pack,把你自己写的这个类放在这里面,加上包路径:
package pack{
import flash.display.MovieClip;
import flash.display.Graphics;
internal class Lei extends MovieClip {
public function Lei() {
graphics.moveTo(100,100);
graphics.lineStyle(1,0x00ff00);
graphics.lineTo(400,400);
}
}
}

然后在这个文件夹里新建一个as文件,写成这个样子:
package pack{
import flash.display.*;
public class PackLei extends Sprite{
public function PackLei():void {
var lei:Lei = new Lei();
this.addChild(lei);
}
}
}

然后再fla的第一帧写上:
import pack.PackLei;

var lei:PackLei = new PackLei();
this.addChild(lei);

调试看结果,发现可以了~~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式