In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: なんで潰れちゃうの??

スプライトが潰れちゃう~!!
スプライトをwidthとheightをいじって拡大したいのに
角度を変えると潰れてしまいます。
角度0だと正常動作しますが、90や270に設定すると…orz
これはいったいどういうこと!?助けてー!
Get Adobe Flash player
by 9re 03 Aug 2010
/**
 * Copyright 9re ( http://wonderfl.net/user/9re )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/zPma
 */

// forked from mrgrotesque's なんで潰れちゃうの??
package
{
    /**
     * スプライトが潰れちゃう~!!
     *  スプライトをwidthとheightをいじって拡大したいのに
     *  角度を変えると潰れてしまいます。
     *  角度0だと正常動作しますが、90や270に設定すると…orz
     *  これはいったいどういうこと!?助けてー!
     */
    import flash.events.Event;
    import flash.display.Sprite;
    
    public class FlashTest extends Sprite
    {
        private var sprite:Sprite;
        private var size:Number = 64;
        
        public function FlashTest()
        {
            // 矢印を作る
            sprite = new Sprite();
            sprite.graphics.beginFill(0x999900);
            sprite.graphics.moveTo(0,-50);
            sprite.graphics.lineTo(50,0);
            sprite.graphics.lineTo(0, 50);
            sprite.graphics.lineTo(0, 30);
            sprite.graphics.lineTo(-50, 30);
            sprite.graphics.lineTo(-50, -30);
            sprite.graphics.lineTo(0, -30);
            addChild( sprite );
            sprite.x = 200;
            sprite.y = 200;
            
            // 0だと正常動作、90だとつぶれる
            sprite.rotation = 90;
            
            addEventListener( Event.ENTER_FRAME, enterFrame );
        }

        private function enterFrame( e:Event ):void
        {
            size++;
            // flash player bug?
            // when the transform matrix is mixed with rotation,
            // the width & height property goes wrong.
            // flashプレイヤーのバグ?
            // rotationとかtransformのmatrixに回転かかってたりすると、
            // 幅と高さの計算がおかしいってことみたい。
            sprite.rotation = 0;
            sprite.width = size;
            sprite.height = size;
            sprite.rotation = 90;
        }
    }
}