编写表格

表格叫做“Grid”,一般可以用于背景展示,对齐等。编写一个易于使用,可以拓展的表格显得尤为重要。
package com.lafabrick.uigfx.primitives{
import com.lafabrick.uigfx.primitives.GridType;

import flash.display.BitmapData;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.geom.Point;
import flash.geom.Rectangle;

import mx.graphics.IFill;
import mx.graphics.IStroke;

import spark.primitives.supportClasses.GraphicElement;

public class Grid extends GraphicElement {
	public function Grid() {
		super();
	}

	private var _tempDisplayObject:Sprite = new Sprite();
	private var _bitmapData : BitmapData;
	private var _bitmapRect : Rectangle;

	private var _stroke : IStroke;

	public function get stroke():IStroke {
		return _stroke;
	}

	public function set stroke(value:IStroke):void {
		weight = value.weight;
		_stroke = value;
		invalidateSize();
		invalidateBitmapData();
		invalidateDisplayList();
		invalidateParentSizeAndDisplayList();
	}

	private var _fill : IFill;

	public function get fill():IFill {
		return _fill;
	}

	public function set fill(value:IFill):void {
		_fill = value;
		invalidateSize();
		invalidateBitmapData();
		invalidateDisplayList();
		invalidateParentSizeAndDisplayList();
	}

	private var _step:Number=20;
	/**
	 *  Grid step
	 *  @default 20
	 */
	[Inspectable("General", minValue="2.0")]
	public function get step():Number
	{
		return _step;
	}
	public function set step(value:Number):void
	{
		if (value != _step)
		{
			_step = Math.max(2, value);

			invalidateSize();
			invalidateBitmapData();
			invalidateDisplayList();
			invalidateParentSizeAndDisplayList();
		}
	}

	private var _type : String = GridType.DOT;

	[Inspectable(enumeration="dotType,lineType,none")]
	public function get type():String {
		return _type;
	}

	public function set type(value:String):void {
		_type = value;
		invalidateSize();
		invalidateBitmapData();
		invalidateDisplayList();
		invalidateParentSizeAndDisplayList();
	}

	private var _weight : Number = .5;

	protected function get weight():Number {
		return _weight;
	}
	protected function set weight(value:Number):void {
		_weight = Math.max(value, Math.max(value, .5));
	}

	protected function invalidateBitmapData() : void
	{
		if(_bitmapData) {
			_bitmapData.dispose();
			_bitmapData = null;
		}
		_bitmapData = new BitmapData(Math.max(1,_step), Math.max(1,_step), true, 0xFF0000);
		_bitmapRect = new Rectangle(0, 0, _step, _step);

		_tempDisplayObject.graphics.clear();

		if(stroke) {
			stroke.apply(_tempDisplayObject.graphics, _bitmapRect, new Point());
		}
		if(fill) {
			fill.begin(_tempDisplayObject.graphics, _bitmapRect, new Point());
		}

		draw(_tempDisplayObject.graphics);

		_tempDisplayObject.graphics.endFill();
		_bitmapData.draw(_tempDisplayObject);
	}

	protected function draw(graphics : Graphics) : void
	{
		switch(type) {
			case GridType.DOT:
					graphics.drawCircle(_step-2*weight, _step-2*weight, weight);
				break;
			case GridType.LINE:
					graphics.drawRect(step-weight, 0, weight, step);
					graphics.drawRect(0, step-weight, step, weight);
				break;
			case GridType.NONE:
				break;
		}
	}

	override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
		super.updateDisplayList(unscaledWidth, unscaledHeight);
		var g:Graphics = Sprite(drawnDisplayObject).graphics;

		g.lineStyle();
		g.beginBitmapFill(_bitmapData, null, true, false);
		g.drawRect(drawX, drawY, unscaledWidth, unscaledHeight);
		g.endFill();
	}
}
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值