Feathers之改变Header中Button皮肤

阅读更多

如之前的文章中介绍, 我们知道了如何设置Button的皮肤

http://kboctopus.iteye.com/admin/blogs/1846801

 

然而当Button被添加在Header中的时候发现又不行了,这是为什么呢?

在细看代码后我发现这是feathers的优化机制导致的, 如前文描述,我们对Button的设置需要在button被addChild之后设置才会生效, 看了代码就会发现header中的元素是在draw的时候才会被添加, 所以现在一切都明朗了,我们要做的就是更换一下设置代码的位置,就像这样

override protected function draw():void
{
	this.header.width = this.actualWidth;
	this.header.validate();
			
	backBtn.stateToSkinFunction = function(target:Object, state:Object, oldValue:Object = null):Image
	{
		return new Image(defaultTexture);
	};
	backBtn.validate();
}

 确保设置在header.validate()之后就会生效, 赶快试试吧! 请不要担心这样做会不会添加性能负担, 答案是不会。

你可能感兴趣的:(feathers,Starling,ActionScript3.0)