zengjoeng layaAir ide中,不想让一个界面的基类是一个皮肤。比如一个窗口,我想让他继承某个组件,而不是一个皮肤。而皮肤只作为这个窗口的属性。但现在皮肤继承的就是显示对象,TS和AS又都是不支持多继承的。那么问题来了,皮肤的基类是不是可以自定义? 一个游戏,很多时候需要做成具有通用行为的组件,而皮肤则需求不同,变化各异。OO编程思想中,继承表达的是我是一个什么,而成员属性,表达的是我能干什么。基类是皮肤,大大限制了UI的可扩展性,要么就是相同逻辑重复写,要么就是难以做成通用组件。既不方便,也不符合软件开发思维方式。 很多人对于皮肤逻辑分离的看法是不方便了,因为直接继承皮肤,要什么显示对象直接拿过来用,如果不继承皮肤,可能要多写一个属性去引用。然而各位是否听过这样一句话,偷懒一时爽,爬坑火葬场。为了一点代码能少写几个单词,把整个程序结构搞的很差,这样的事,真的希望别再一次次重演了。但上网搜索完全没人关注这一块,一味的夸赞morn ui多么好。是否有人知道如何自定义一个皮肤的基类? 这一点,egret做得很好,整个机制就是皮肤和逻辑分离,真心希望官方可以借鉴一下。可以参看这篇文章http://edn.egret.com/cn/article/index/id/274 最后再点题一下,是否有人知道如何自定义一个皮肤的基类?
qian https://ldc.layabox.com/doc/?nav=zh-as-2-4-0https://ldc.layabox.com/doc/?nav=zh-as-2-4-1https://ldc.layabox.com/doc/?nav=zh-as-2-4-2看一下这几篇文档~
zengjoeng qian 你没明白什么意思。我说的是一个界面的基类,不应该继承一个皮肤。Button是逻辑组件,ButtonSkin是皮肤。我们通过设置button.skinName=ButtonSkin这种方式为逻辑组件指定皮肤类。当Button初始化(被加到显示列表)的时候,就会new一个ButtonSkin的实例,并添加ButtonSkin里所有子项到显示列表。
zengjoeng 看,在laya中,界面的基类是一个皮肤,皮肤的基类是一个View。而我所说的是界面的基类是View,而皮肤的基类就是皮肤的基类。界面可以把皮肤实例中的各个显示对象添加到自己的显示列表中,在界面里用_skin.btn、_skin.label的形式来引用显示对象。你给的例子,加的逻辑还是在皮肤里。界面还是要继承皮肤。