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

なんで潰れちゃうの??

スプライトが潰れちゃう~!!
スプライトをwidthとheightをいじって拡大したいのに
角度を変えると潰れてしまいます。
角度0だと正常動作しますが、90や270に設定すると…orz
これはいったいどういうこと!?助けてー!
Get Adobe Flash player
by mrgrotesque 03 Aug 2010
  • Related works: 4
  • Talk

    mrgrotesque at 03 Aug 2010 05:58
    スプライトをwidthとheightをいじって拡大したいのですが、 角度をいじると潰れちゃうんです。 たしかに角度を変えると、どっちがwidthでどっちがheightなのかこんがらがるので おかしくなる理由もわかる気がするのですが、これって正常な動きなのでしょうか??
    mrgrotesque at 03 Aug 2010 14:26
    結果:Flashのバグみたいです。 http://wonderfl.net/c/zPma Forkしてくれた皆様ありがとうございました!

    Tags

    Embed
/**
 * Copyright mrgrotesque ( http://wonderfl.net/user/mrgrotesque )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/wSac
 */

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++;
            sprite.width = size;
            sprite.height = size;
        }
    }
}