首先,最好说我是 Flex / OOP 的新手。我一直在尝试添加一个基于 StrokedElement 的自定义类,以实现一个简单的网格(不像现有的 Flex Grids - 这只是用于显示 - 不包含元素等......)
我现在的班级是这样的:
package ui.helpers
{
import flash.display.Graphics;
import spark.primitives.supportClasses.StrokedElement;
public class SGrid extends StrokedElement
{
public function SGrid()
{
super();
}
private var _gridSize:Number;
[Inspectable(category="General", minValue="1.0")]
public function get gridSize():Number
{
return _gridSize;
}
public function set gridSize(value:Number):void
{
if (value != _gridSize)
{
_gridSize = value;
invalidateSize();
invalidateDisplayList();
invalidateParentSizeAndDisplayList();
}
}
override protected function draw(g:Graphics):void {
for(var x:int; x < width; x+= _gridSize) {
g.moveTo(x,0);
g.lineTo(x,height);
}
for(var y:int; y < height; y+= _gridSize) {
g.moveTo(0,y);
g.lineTo(width,y);
}
}
}
}
摘自 Flex spark.primatives.rect - 一切正常 - 但是当我将它添加到我的应用程序时,我希望这样做:
<helpers:SGrid id="gridOne" width="100" height="200" gridSize="10">
<s:stroke>
<s:SolidColorStroke color="0xCCCCCC" alpha="0.8" />
</s:stroke>
</helpers:SGrid>
但实际上这是可行的:
<helpers:SGrid id="gridOne" width="100" height="200" gridSize="10">
<helpers:stroke>
<s:SolidColorStroke color="0xCCCCCC" alpha="0.8" />
</helpers:stroke>
</helpers:SGrid>
如果我使用 s:stroke 则会出现错误。显然我很高兴它有效 - 但我试图理解为什么这里有区别?