11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2458|回复: 7
上一主题 下一主题

[封装] 封装之:internal用法举例(小练习)

[复制链接] TA的其它主题
发表于 2018-12-12 15:51:24 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

//封装之:internal用法举例(小练习)
//在
[Actionscript3] 纯文本查看 复制代码
package inte[/align]{

	public class Class1
	{

		public function Class1()
		{
			// constructor code
		}
		var teacher1:String = "赵老师";
		//没有控制符,默认internal
		internal function pri1(e:String)
		{
			trace("我们一班的英语老师是:"+e);
		}

	}

[align=left]}
同一个包中定义两个类:一班、二班
[Actionscript3] 纯文本查看 复制代码
package inte
{

	public class Class2
	{
      var c1:Class1 = new Class1();
		public function Class2()
		{
			// constructor code
		}
		//二班的属性和方法都是public
		public var teacher2:String = "武老师";
		public function pri2(en:String)
		{
			trace("我们二班的英语老师是:"+en);
		}
		//用二班的这个方法来访问一班的属性和方法
		public function pri2_1()
		{
			c1.pri1(c1.teacher1);

		}

	}

}
[Actionscript3] 纯文本查看 复制代码
package
{

	import flash.display.Sprite;
	import inte.Class1;
	import inte.Class2;

	public class document extends Sprite
	{
		var c1:Class1 = new Class1();
		var c2:Class2 = new Class2();

		public function document()
		{
			
			itnt();// constructor code
		}
 function itnt(){
		/*//试图访问c1的teacher1属性和pri1方法,报错:1178: 试图访问不可访问的属性 teacher1 (通过 static 类型 inte:Class1 引用)。
		trace(c1.teacher1);
		c1.pri1("张老师");*/
		//访问c2的属性和方法
		trace(c2.teacher2);
		c2.pri2("张老师");
		//用c2的pri2_1方法来访问c1
		c2.pri2_1();
 }
	}

}

评分

参与人数 1银子 +88 金子 +1 贡献 +1 收起 理由
TKCB + 88 + 1 + 1 11RIA 星火燎原,重现燃烧的岁月.

查看全部评分

 楼主| 发表于 2018-12-12 16:17:12 | 显示全部楼层
总算把它写好了,这个小练习整整困扰了我两天的时间,只能说我在学习Package的时候没有深入的研究,以致于老是找不到其中的错误,老是编译不过去!!下面我就来总结一下本次练习中的过错:
1、package的使用:package定义的包只能是当前目录下的子目录,不可以在父目录或其他目录中定义包,否则永远也过不去!!其实Package定义的包就是文件夹,我们要在当前目录中新建一个文件夹把我们定义的包名重命名这个文件夹,并把我们写好的.as文件放在这个文件夹内,要注意一定要“相同的名称!!!”否则报错。
2、import的使用:import导入的包只能是当前目录下的子目录中的包(也就是子文件夹),而且包的路径只能从子目录开始,不可多写,否则报错,找不到……之类!
总结以上两个错误,主要是路径问题!好像有类路径和包路径之分,具体什么情况我至今没搞明白!反正必须按上述所写的要求,才能编译通过!!我花费了大量精力!百度了n个博客,论坛!无数次的尝试,才成功!来之不易!!!
3、还有一个错误,就是在编写class2这个类的时候,要访问同一包中的class1时,要实例化class1,即:var c1:Class1=new Class1,这一点很好理解!不多累述!
回复

使用道具 举报

发表于 2018-12-12 16:24:47 | 显示全部楼层
雪原xy 发表于 2018-12-12 16:17
总算把它写好了,这个小练习整整困扰了我两天的时间,只能说我在学习Package的时候没有深入的研究,以致于 ...

不错不错加油~~

不过说句真心话,Flash AS如果作为兴趣爱好,挺不错的。。

但是如果未来想靠这个工作混饭吃,,挺难得,,因为大趋势是Flash很少有公司作为主要软件使用了~~
回复

使用道具 举报

 楼主| 发表于 2018-12-12 16:35:05 | 显示全部楼层
TKCB 发表于 2018-12-12 16:24
不错不错加油~~

不过说句真心话,Flash AS如果作为兴趣爱好,挺不错的。。

呵呵,现在我越来越对它感兴趣了,每次编译通过都很高兴!谢谢你!
回复

使用道具 举报

发表于 2018-12-12 16:42:27 | 显示全部楼层
雪原xy 发表于 2018-12-12 16:35
呵呵,现在我越来越对它感兴趣了,每次编译通过都很高兴!谢谢你!

Flash AS是一门适合入门  编程 的语言。。认真学,确实很有意思,也挺轻松。。
而且Flash软件可见即可得的特点很NB。。
回复

使用道具 举报

 楼主| 发表于 2018-12-12 16:46:23 | 显示全部楼层
TKCB 发表于 2018-12-12 16:42
Flash AS是一门适合入门  编程 的语言。。认真学,确实很有意思,也挺轻松。。
而且Flash软件可见即可得 ...

对,我现在要的就是入门!!!再次感谢!
回复

使用道具 举报

 楼主| 发表于 2018-12-12 16:50:20 | 显示全部楼层
TKCB 发表于 2018-12-12 16:42
Flash AS是一门适合入门  编程 的语言。。认真学,确实很有意思,也挺轻松。。
而且Flash软件可见即可得 ...

谢谢你的金子!
回复

使用道具 举报

 楼主| 发表于 2018-12-12 21:34:54 | 显示全部楼层
雪原xy 发表于 2018-12-12 16:17
总算把它写好了,这个小练习整整困扰了我两天的时间,只能说我在学习Package的时候没有深入的研究,以致于 ...

补充说明:今晚又研究了一下,package和import。这里有一个源路径问题,(有的书上是类路径,一个意思)一个.fla文件可以设置多个源路径!这些源路径的顺序还是可以调节的(具体怎么设置,这里不做解释,可以到网上查询,很容易查到)如果要import的类分别在这些源路径里,那么直接导入类名就可以了,如果要import的类在某个源路径的子目录里,那么import的类要加上子目录的名称,(也就是一些书籍里所提到的包路径),import只能导入源路径下的子包中的类!不能导入上一级的目录中的类(或者是硬盘上其他位置的类)!所以你要想导入上一的目录中的类(或者是硬盘上其他位置的类),就要把上一级的目录(或者是硬盘上其他位置)设置成.fla文件的一个源路径!
简而言之,.fla文件能够访问的包或类都是源路径以下的包或类,源路径以上(或以外)的类.fla是无法访问的,假如由于某种原因我们一定要访问源路径以外的类怎么办呢?有两个方法:一是把那个类转移到.fla的源路径下的某个子目录里;另一个方法就是把我们要访问的那个类所在的路径设置为.fla的一个源路径!
以上结论是我通过尝试反复的结果,不得不承认大部分内容都是我在尝试的过程中猜测的结论,不一定是正宗的规则,但是事实证明,这些猜测都通过的编译器的编译,相信这些猜测会给你带来一定的帮助!
也欢迎各位大神给我指正!!!有不确切的地方请各位谅解!谢谢!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表