`

对齐到网格与锁定到网格

 
阅读更多

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                width="700" height="450" applicationComplete="applicationCompleteHandler(event)"
                backgroundColor="0xFFFFFF" backgroundGradientColors="[0xFFFFFF,0xFFFFFF]"
                fontSize="12" layout="absolute"
                viewSourceURL="http://img.l4cd.net/attachment/snap-to-grid/srcview/"
                >
    
    <mx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            protected var hGap:Number;
            protected var vGap:Number;
            protected function clickHandler(event:MouseEvent):void
            {
                hGap = h.value * 10;
                vGap = v.value * 10;
                drawGrid();
            }
            
            private function drawGrid():void
            {
                content.graphics.clear();
                content.graphics.lineStyle(2,0xFF0000);
                var pos:Number = 0;
                while(pos < content.width)
                {
                    pos += vGap;
                    content.graphics.moveTo(pos,0);
                    content.graphics.lineTo(pos,content.height);
                }
                pos = 0;
                while(pos < content.height)
                {
                    pos += hGap;
                    content.graphics.moveTo(0,pos);
                    content.graphics.lineTo(content.width,pos);
                }
            }
            
            protected function applicationCompleteHandler(event:FlexEvent):void
            {
                clickHandler(null);
                dot = new Sprite();
                dot.graphics.beginFill(0xFF6600,0.75);
                dot.graphics.drawCircle(0,0,10);
                dot.graphics.endFill();
                content.addChild(dot);
                dot.x = dot.y = 40;
                dot.addEventListener(MouseEvent.MOUSE_DOWN,onSpriteDown);
            }
            protected var dot:Sprite;
            
            protected function onSpriteDown(event:MouseEvent):void
            {
                stage.addEventListener(MouseEvent.MOUSE_MOVE,onDragMove);
                stage.addEventListener(MouseEvent.MOUSE_UP,onDragStop);
                onDragMove(event);
            }
            
            protected function onDragMove(event:MouseEvent):void
            {
                var targetX:int = event.stageX;
                var targetY:int = event.stageY;
                var distanceX:Number = 0;
                var distanceY:Number = 0;
                if(snap.selected)
                {
                    distanceX = 10;
                    distanceY = 10;
                }
                if(lock.selected)
                {
                    distanceX = hGap / 2;
                    distanceY = vGap / 2;
                }
                
                //最主要代码,判断当前位置是否在网格的上下左右指定像素内
                var value:int;
                if(distanceX > 0)
                {
                    value = targetX % hGap;
                    if(value < distanceX)
                    {
                        targetX -= value;
                    }else if(value >= hGap - distanceX)
                    {
                        targetX += hGap - value;
                    }
                }
                if(distanceY)
                {
                    value = targetY % vGap;
                    if(value < distanceY)
                    {
                        targetY -= value;
                    }else if(value >= vGap - distanceY)
                    {
                        targetY += vGap - value;
                    }
                }
                dot.x = targetX;
                dot.y = targetY;
                event.updateAfterEvent();
            }
            
            protected function onDragStop(event:MouseEvent):void
            {
                stage.removeEventListener(MouseEvent.MOUSE_MOVE,onDragMove);
                stage.removeEventListener(MouseEvent.MOUSE_UP,onDragStop);
            }
            
        ]]>
    </mx:Script>
    <mx:UIComponent id="content" left="0" right="0" top="0" bottom="0">
        
    </mx:UIComponent>
    <mx:NumericStepper id="h" x="10" y="418" maximum="10" minimum="1" value="4"/>
    <mx:NumericStepper id="v" x="75" y="418" maximum="10" minimum="1" value="4"/>
    <mx:Button x="140" y="418" label="生成网格" click="clickHandler(event)"/>
    <mx:CheckBox id="snap" x="222" y="418" label="Snap To Grid" selected="true"/>
    <mx:CheckBox id="lock" x="333" y="418" label="Lock To Grid"/>
</mx:Application>
 
分享到:
评论

相关推荐

    网格锁定:将所有单独的支架对齐到相似的位置。-matlab开发

    游戏说明: 目标:将所有个人持有人对齐到类似的位置。 移动:通过单击各个持有人来翻转位置。 注意:行和列状态同时翻转。

    Grid++Report6.0

    3、文字显示增加段间距、首字缩进与两端分散对齐。 4、分组报表可以按某个统计值的大小对分组项进行排序 5、数据源除了OLE DB外,增加XML、JSON与普通文本数据。 6、在编程接口中增加了很多应用函数,如数据压缩、...

    AutoPlay_Menu_Builder6.0.1328注册版

     显示网格在设计窗口上绘制点阵以形成网格对齐控件到网格自动对齐控件到临近的网格同时编辑所有选定控件的属性当选定多个控件时,使用属性编辑器修改所有控件的属性,或者仅修改第一个控件的属性网格大小设置网格...

    AutoPlay_Menu_Builder5.5.0.1328注册版

     显示网格在设计窗口上绘制点阵以形成网格对齐控件到网格自动对齐控件到临近的网格同时编辑所有选定控件的属性当选定多个控件时,使用属性编辑器修改所有控件的属性,或者仅修改第一个控件的属性网格大小设置网格...

    primalDraw-crx插件

    网格功能–将对象和对象控制点对齐到网格。 路径–创建,分组,组合,制动和操纵路径。 变换–使用编辑手柄移动,调整大小和旋转任何对象。 属性管理器–实时创建和编辑多个对象属性。 对象管理器–使用对象管理器...

    绘易CAD(HYCAD) 版本5.35

    29、图层:图层管理,取为当前层,设当前层到,锁定图层,关闭图层,解锁图层,打开图层,对象改层。 30、选择命令:快速选择,全部选择,反转选择,按层选择,取消选择。 31、对齐:左对齐,横向居中对齐,右对齐...

    标签条码打印软件 v5.13

    5,支持元素的对齐方式,多个元素的对齐,锁定元素的位置。 6,丰富的标签元素支持:文本、文本链(文本的组合)、自动文本(通过规则定义使每一张标签按一定的规则变化)、直线、折线、框、圆、多边形、图片等元素...

    framer-moreutils:使用一些方便的辅助功能扩展实用程序

    相对于层的位置锁定到另一个层 :删除图层的固定关系 PinOrigin :根据图层的originX和originY属性设置图层与另一图层的相对位置。 :设置相对于其父级的层的约束 对齐:将数组中的所有图层设置为相同的属性值 ...

    专业字幕制作工具 NewBlueFX Titler Pro 7.2.200609 x64 中文免费版.zip

    对齐网格或指南 对齐菜单 分组 文本适合模式(包装和缩放) 排列图层菜单 移动对象箭头快捷方式 使用 Alt + 箭头 控制 文本控制全部大写和小写字母控制切割文本模式 完全对齐文本选项 五、导入/导出 导入视频(.mp4...

    专业 PDF 编辑器直接修改PDF文档.rar

    它包括分组、隐藏、锁定等图形处理工具,另外还增加了编辑和创建剪切蒙版及垂直标尺的功能,使对象可与网格、参考线和页边距轻松对齐。 插入/放置 PDF 您可将现有的 PDF 作为一个文档的组成部分添加到新文档中,只...

    NPOI,c#操作excel的建议组建dll(包括详细使用手册)

    2.2.3 对齐相关设置 2.2.4 使用边框 2.2.5 字体设置 2.2.6 背景和纹理 2.2.7 设置宽度和高度 2.3 使用Excel公式 2.3.1 基本计算 2.3.2 SUM函数 2.3.3 日期函数 2.3.4 字符串相关函数 2.3.5 IF函数 2.3.6 CountIf和...

    咖啡智能报表控件 2.0.zip

    合并、拆分、对齐方式、背景、前景、边框、前缀、后缀、格式化、套打标志、数字大写显示、多种数据类型、 数据长度设定、多种单元格类型、超级链接、EMAIL链接、特殊字符前缀、回车换行、自动换行、锁定、焦点、 ...

    计算机基础关键字汇总——计算机资料文档.docx

    第10页,共10页 第10页,共10页 ...我的文档 开始菜单 左常变、右系固 通知区图标 指示器 窗口排列方式 层叠、横向平铺、纵向平铺 图标排列方式 名称、大小、类型、修改时间、 按组排列、自动排列、对齐到网格 分辨率

    多显示器监控管理工具 Actual Multiple Monitors 8.14.2 中文多语免费版.zip

    锁定鼠标 – 将鼠标指针锁定在特定窗口或监视器中,防止它离开游戏和许多其他人 桌面分割器 分隔器允许您将整个大型桌面或每个监视器划分为几个非交叉区域(图块)。如果您将窗口放入其中一个这样的图块中,窗口将...

    Adobe Illustrator CS4 官方简体中文帮助文档.rar

    选择对象 172编组和扩展对象180移动、对齐和分布对象181旋转和镜像对象185使用图层 188锁定、隐藏和删除对象192对象堆叠 194复制对象 195 第 8 章: 改变对象形状 变换对象 197缩放、倾斜以及扭曲对象. 198使用...

    速印标签条码打印软件(标签打印软件) v5.20.zip

    5,支持元素的对齐方式,多个元素的对齐,锁定元素的位置。 6,丰富的标签元素支持:文本、文本链(文本的组合)、自动文本(通过规则定义使每一张标签按一定的规则变化)、直线、折线、框、圆、多边形、图片等...

    CAD2012 入门讲解通用教程视频教学

    第06章\6.2.5 锁定与解锁命令.mp4 第06章\6.2.6 打印与不打印.mp4 第06章\6.3.1 上一个图层.mp4 第06章\6.3.2 图层匹配.mp4 第06章\6.4 综合练习.mp4 第07章\7.1.1 UCS的概念.mp4 第07章\7.1.2 UCS的建立.mp4 第07章...

    dominoes:OCTGN 的游戏定义

    一个不可见的对齐网格用于帮助玩家正确放置他们的多米诺骨牌。 为了进一步帮助玩家正确放置,传统的 W/A/S/D 键与 CTRL 结合使用会将多米诺骨牌向给定方向移动一个空间。 CTRL+E 将顺时针旋转多米诺骨牌,CTRL+Q 将...

Global site tag (gtag.js) - Google Analytics