+ -
当前位置:首页 → 问答吧 → FLASH导出SWF文件随手柄拖动,内部画面等比例缩放大小,部分MC大小始终不变,如何实现

FLASH导出SWF文件随手柄拖动,内部画面等比例缩放大小,部分MC大小始终不变,如何实现

时间:2010-11-19

来源:互联网

1.jpg (17.81 KB)
2010-11-19 12:24

最好是AS2的思路 对AS3表示鸭梨很大~~T。T

作者: kinbox   发布时间: 2010-11-19

很简单的要求嘛。
让a_mc做相反的缩放就行
或者只缩放a_mc以外的其它对象

作者: flash023   发布时间: 2010-11-19

谢谢斑竹的思路
但是我是AS小白
“SWF文件随手柄拖动,内部画面等比例缩放大小”
这块的AS怎么写~的~~T T

作者: kinbox   发布时间: 2010-11-19

计算与鼠标与注册点之间的距离
复制内容到剪贴板
代码:
package
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    
    /**
     * ...
     * @author FLASH023
     */
    public class Main extends Sprite  
    {
        private var now_sprite:Sprite;
        public function Main():void {
            stage.addEventListener (MouseEvent.MOUSE_DOWN, mouseDownHandler);
        }
        private function mouseDownHandler(_evt:MouseEvent ):void {
            now_sprite = addChild (new Sprite) as Sprite;
            now_sprite.blendMode = "layer";
            var _n:uint = uint(Math.random () * 6 + 3);
            now_sprite.addChild (createLVP(_n)) ;
            var _s:Sprite = createLVP(_n);
            _s.scaleX = _s.scaleY = .6;
            _s.blendMode = "erase";
            now_sprite.addChild (_s) ;
            now_sprite.x = mouseX;
            now_sprite.y = mouseY;
            now_sprite.width = now_sprite.height = 2;
            stage.addEventListener (MouseEvent.MOUSE_MOVE, mouseMoveHandler);
            stage.addEventListener (MouseEvent.MOUSE_UP, mouseUpHandler);
        }
        private function mouseMoveHandler(_evt:MouseEvent ):void {
            now_sprite.width = now_sprite.height = Math.abs (mouseX - now_sprite.x)*2;
        }
        private function mouseUpHandler(_evt:MouseEvent ):void {
            now_sprite = null;
            stage.removeEventListener (MouseEvent.MOUSE_MOVE, mouseMoveHandler);
            stage.removeEventListener (MouseEvent.MOUSE_UP, mouseUpHandler);
        }
        private function createLVP(_n:uint):Sprite {
            var _sprite:Sprite = new Sprite;
            _sprite.mouseEnabled = false;
            _sprite.graphics.lineStyle (1, 0, 0);
            _sprite.graphics.beginFill (Math.random ()*0xffffff);
            _sprite.graphics.moveTo(Math.cos (Math.PI*2)*100, Math.sin (Math.PI*2)*100);
            var _v:uint = _n;
            while (_n--) {
                _sprite.graphics.lineTo(Math.cos (_n/_v*Math.PI*2) * 100, Math.sin (_n/_v*Math.PI*2) * 100);
            }
            _sprite.graphics.endFill ();
            return _sprite;
        }
    }    
}
这里有一个09年做的示例,内有这种效果。
按住鼠标不放,拖动,就可以绘制出相应大小的图形

附件

BB.swf (1.56 KB)

2010-11-19 13:04, 下载次数: 4

作者: flash023   发布时间: 2010-11-19

楼主去试试greensock的AutoFitArea

作者: 蓝色月光   发布时间: 2010-11-19