在 ActionScript 中使用 9 切片缩放

在下面的示例中,将使用绘画工具绘制 300 x 300 像素的方形,并使用 9 切片缩放来调整该方形的大小。该方形分为九个较小的方形,每个约为 100 像素宽,100 像素高。调整方形的大小时,除角之外的每个段都将展开,以与指定的宽度和高度匹配。

通过 ActionScript 使用 9 切片缩放:

  1. 创建一个新的 Flash 文档,并将它保存为 ninescale.fla
  2. 将一个 Button 组件拖动到当前文档的库中。
  3. 选择"矩形"工具并在舞台上绘制一个红色方形(300 x 300 像素),其笔触为 15 像素的黑色笔触。
  4. 选择"椭圆"工具并在舞台上绘制一个紫色圆形(50 x 50 像素),其笔触为 2 像素的黑色笔触。
  5. 选择紫色圆形并将其拖动到前面创建的红色方形的右上角。
  6. 选择"椭圆"工具并绘制一个新的圆形(约为 200 x 200 像素),将其放置在舞台边缘。
  7. 选择舞台上的新圆形并进行拖动,以使圆形的中点位于方形的左下角。
  8. 在圆形实例外单击鼠标,以取消选择该圆形。
  9. 再次双击该圆形以将其选中,并按下退格键删除该形状,并删除方形的圆形部分。
  10. 使用鼠标选择整个红色的方形以及内部的紫色圆形。
  11. 按 F8 将该形状转换为影片剪辑元件。
  12. 为舞台上的影片剪辑指定实例名称 my_mc
  13. 将下面的 ActionScript 添加到主时间轴中的第 1 帧:
    import mx.controls.Button;
    import flash.geom.Rectangle;
    
    var grid:Rectangle = new Rectangle(100, 100, 100, 100);
    
    var small_button:Button = this.createClassObject(Button, "small_button", 10, {label:"Small"});
    small_button.move(10, 10);
    small_button.addEventListener("click", smallHandler);
    function smallHandler(eventObj:Object):Void {
            my_mc._width = 100;
            my_mc._height = 100;
    }
    
    var large_button:Button = this.createClassObject(Button, "large_button", 20, {label:"Large"});
    large_button.move(120, 10);
    large_button.addEventListener("click", largeHandler);
    function largeHandler(eventObj:Object):Void {
            my_mc._width = 450;
            my_mc._height = 300;
    }
    
    var toggle_button:Button = this.createClassObject(Button, "toggle_button", 30, {label:"scale9Grid=OFF", toggle:true, selected:false});
    toggle_button.move(420, 10);
    toggle_button.setSize(120, 22);
    toggle_button.addEventListener("click", toggleListener);
    function toggleListener(eventObj:Object):Void {
        if (eventObj.target.selected) {
            eventObj.target.label = "scale9Grid=ON";
            my_mc.scale9Grid = grid;
        } else {
            eventObj.target.label = "scale9Grid=OFF";
            my_mc.scale9Grid = undefined;
        }
    }
    

    前面的代码分为五个部分。第一部分代码导入两个类:mx.controls.Button(Button 组件类)和 flash.geom.Rectangle。第二部分代码创建一个新的 Rectangle 类实例,并将 xy 坐标指定为 100 像素,将宽度和高度也指定为 100 像素。此矩形实例用于为后面创建的影片剪辑形状设置 9 切片缩放网格。

    下一步,您将创建一个新的 Button 组件实例,并为其给定实例名称 small_button。只要单击此按钮,前面创建的影片剪辑便重新调整为 100 像素宽和 100 像素高。第四部分代码动态创建一个名为 large_button 的新 Button 实例,单击该实例时,将把目标影片剪辑调整为 450 像素宽和 300 像素高。最后一部分代码创建一个新的 Button 实例,用户可以将其切换为打开或关闭。当该按钮处于打开状态时,将应用 9 切片网格。如果按钮处于关闭状态,则禁用 9 切片网格。

  14. 保存 Flash 文档,然后选择"控制">"测试影片"对该 SWF 文件进行测试。

    此代码示例在舞台上添加并定位三个 Button 组件实例,并为每个按钮创建事件侦听器。如果单击禁用了 9 切片网格的 Large 按钮,则可以看到图像扭曲,呈现拉伸效果。通过单击切换按钮启用 9 切片网格,然后再次单击 Large 按钮。因为已启用了 9 切片网格,左上角的圆形应不再显示为扭曲。