`

对齐到网格与锁定到网格

 
阅读更多

<?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>
 
分享到:
评论

相关推荐

    Illustrator渐变网格工具不完全手册

    4. **锁定和解锁网格**:锁定网格可以防止在编辑时意外改变网格,而解锁则允许自由编辑。 5. **使用图层**:将渐变网格放在单独的图层上,方便管理和修改,同时不会影响其他元素。 **平面设计应用**: 1. **产品...

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

    在MATLAB开发中,"网格锁定"是一种编程技术,它涉及到如何精确地排列和对齐图形用户界面(GUI)中的组件,比如按钮、文本框或图像等支架。这个概念是为确保GUI元素按照预设的网格系统整齐有序地分布,从而提供一个...

    Excel图形对齐技巧.rar

    6. **锁定坐标轴**:在处理图表时,你可能希望图形与坐标轴对齐。可以将图形设置为“与单元格对齐”,然后调整其位置,使其与坐标轴重合。这在创建数据标签或说明文字时特别有用。 7. **宏和自定义快捷键**:对于...

    Excel2021如何快速将文本框与单元格对齐?.docx

    这样,你所绘制的文本框边缘将会自动与Excel的网格线对齐,从而确保它与周围的单元格保持一致。这尤其适用于需要精确对齐的情况,比如创建图表标签或在单元格内添加注释。 3. **调整大小**: 绘制完文本框后,可以...

    第2章对象和帧的基本操作及场景[整理].pdf

    通过“编辑网格”对话框,可以定制网格的颜色、线距,以及是否在移动对象时自动对齐网格。 2. **标尺**:标尺可以帮助测量和定位对象。选择“视图”→“标尺”来显示或隐藏标尺。辅助线是从标尺拖出的垂直或水平线...

    锁定桌面图标

    打开"控制面板",选择"外观和个性化",然后点击"显示",在"更改桌面图标的位置"部分,取消勾选"自动排列图标",并选择"将图标与网格对齐"。这样,尽管可以拖动图标,但一旦释放鼠标,图标会自动回到原设定的位置。 ...

    LTE时频网格中主同步信号和辅同步信号的资源映射

    它们允许移动设备准确地识别和锁定到LTE小区,从而进行后续的数据传输。在FDD(频分双工)模式下,这些信号被精心设计并映射在时频网格上,以确保高效和可靠的同步过程。 主同步信号PSS的主要功能是帮助设备快速...

    ICEMCFD块操作快捷键.pdf

    6. **对齐顶点 (l)**: 快速调整顶点的位置,使其与另一顶点对齐,保证网格的对称性。 7. **移动顶点 (m)**: 允许用户精确地移动顶点的位置,以适应几何变化或优化网格分布。 8. **预览网格参数 (n)**: 在执行网格...

    IllustratorCS中文版实例教程图像对象的组织完美版资料.ppt

    - **网格对齐**:启用网格显示(快捷键Ctrl+“)可以帮助用户更精确地对齐图形,使其与网格线对齐,确保元素的精确定位。 - **辅助线对齐**:显示标尺(快捷键Ctrl+R)后,用户可以自定义辅助线并使用它们来辅助...

    在FLASH里能不能设置参考线_flash8.0视频教程

    5. **对齐参考线**:选择“视图”(View) &gt; “对齐到网格”(Align to Grid)或“对齐到参考线”(Align to Guides)可以帮助你更精确地定位参考线。此外,按键盘上的`Ctrl + ;`会自动将当前选定的对象与最近的参考线对齐...

    AI模拟题答案修正版.docx

    这些知识点主要集中在基础操作层面,包括但不限于文件管理、对象处理、对齐与分布、对象锁定与解锁等核心技能。下面是对各知识点的详细解释: ### 1. 导入位图 - **知识点**: 在Adobe Illustrator中,导入位图图像...

    EDA/PLD中的编辑VI时对齐和分布对象

    在实际应用中,可能还需要结合其他布局管理工具,如网格设置、锁定对象、自动对齐等,来达到更为精细的布局效果。网格设置允许设定间距,使得对象放置更加精确;锁定对象可以防止在编辑过程中意外移动;自动对齐则会...

    AICS4快捷键大全.pdf

    Ctrl+Shift+:(冒号):切换网格与对齐。 Ctrl+2:显示/隐藏精确度控制。 Ctrl+Alt+2:显示/隐藏智能导向设置。 Ctrl+Shift+2:设置对齐基准线。 Ctrl+Alt+J:切换文档窗口。 Ctrl+Alt+B:切换图形样式库。 Ctrl+Alt...

    win10/win1桌面图标锁定,防止桌面图标移动

    4. **临时禁用图标自动排列**:在桌面空白处右键,取消勾选“自动排列图标”和“将图标与网格对齐”。这样,图标就不会自动移动,但需要手动保持图标排列。完成后记得恢复默认设置,以防后续出现其他问题。 5. **...

    FLASH快捷键大全.doc

    - 对齐网格【Ctrl+Shift+]】:对齐对象到网格。 - 编辑网格【Ctrl+Alt+G】:编辑网格设置。 - 显示/隐藏辅助线【Ctrl+;】:显示或隐藏辅助线。 - 锁定/解锁辅助线【Ctrl+Alt+;】:锁定或解锁辅助线。 - 对齐...

    AI-----常用快捷键.docx

    8. **对齐网格**:Shift+Ctrl+' - 将对象对齐到网格,确保元素位置准确。 9. **对齐点**:Alt+Ctrl+' - 对齐对象的锚点,适用于多个对象的精确对齐。 10. **信息面板**:Ctrl+F8 - 查看对象的尺寸、角度等详细信息...

    OFFICE使用技巧大全集2011年最新篇~~

    - **对齐网格**: 使对象精确对齐。 - **标尺**: - **显示标尺**: 视图&gt;标尺。 - **垂直标尺和水平标尺**: 分别测量高度和宽度。 - **零起点**: 舞台左上角。 - **单位设置**: 修改&gt;文档对话框中的标尺单位选项...

Global site tag (gtag.js) - Google Analytics