快速导航:   教程资源  | 经典范例  | 友情链接  | 联系我们  | 官方微博
登陆 | 注册

 flash 3d 研究所
flash3d 研究所 pv3d 教程 研究所小贴士: Flash3D研究所有群了~总部群号:57812159 ; Simon分部群号:59264372










最近更新:
● wan925446570阁下在讨论区里 回复“怎么配置away3d 4.0运行环境啊?...”(15:12:45)
● wan925446570阁下在讨论区里 回复“怎么配置away3d 4.0运行环境啊?...”(10:01:38)
● DDM君阁下在讨论区里 回复“怎么配置away3d 4.0运行环境啊?...”(19:07:43)
浏览主题:类的封装问题

类的封装问题
newyaya (2010-01-22 14:04:58)


var himg:heroimg=new heroimg("img");//heroimg是我封装的影片剪辑,可以通过属性去跳转指定标签的动画
        var hero:Sprite2D = new Sprite2D("hero" ,himg,1);//三个参数分别是实例名称,显示对象,放大倍数
        hero.x =  635;
 hero.z = 1000;
 hero.y =0;
 g.addChild(hero);
我现在就想把heroimg和Sprite2D一起封装起来,怎么解决啊
g是三维容器。






flash 3d 研究所 DDM君
(2010-01-22 14:16:13)
不太理解您 '一起封装'的意思. 不知道您是否需要下面这样的。

function create(_实例名:String, _属性:String ,_放大倍数:int ):Sprite
{
var himg:heroimg=new heroimg("_属性");
var hero:Sprite2D = new Sprite2D(_实例名 ,himg,_放大倍数);
...
...各种操作
...
return hero;

}



flash 3d 研究所
(2010-01-22 15:36:05)
不知那个 himg用做接口是否就可以了?呵呵,我乱说的



flash 3d 研究所 newyaya
(2010-01-22 16:00:30)
就是DDM君的回答,但是我要把它封到类里面
因为as3的构造函数不能返回值,所以不知该怎么做



flash 3d 研究所 DDM君
(2010-01-22 16:09:55)
写一个ISprite接口,然后用新的类,比如HeroSprite实现这个接口。

var hero:ISprite2D=new HeroSprite(什么什么的...)

类和构造就下面这样
class HeroSprite extends Sprite2D implements ISprite2D

function HeroSprite(_实例名:String, _属性:String ,_放大倍数:int )
{
var himg:heroimg=new heroimg("_属性");
var hero:Sprite2D = new Sprite2D(_实例名 ,himg,_放大倍数);
...
...各种操作
...

this=hero;
}



flash 3d 研究所 DDM君
(2010-01-22 16:28:06)
或者直接super(...)也是完全一样的


flash 3d 研究所 newyaya
(2010-01-22 17:49:19)
谢谢DDM君
以前一直不知道"接口"有什么用,现在知道了。
看了你的回答,搜索的,茅塞顿开。
public function aMethod(arg:MyClass):void {
.....
}


参数 arg 的类型必须是 MyClass,因为我们需要在该方法中使用MyClass的API
而MyClass是一个类的话,你传入的对象必须是MyClass类的实例或者是MyClass子类的对象,但是当你要传入的一个对象,他既不是MyClass类的实例也不是MyClass子类的对象,而是一个已经继承了其他类的对象呢,这样就难办了。 因为AS和Java一样,都不允许多重继承,多重继承会带来使类结构变的复杂难以管理的麻烦。

这时候接口就能派上用场了。

public function aMethod(arg:MyInterface):void {
.....
}



评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了