A Flash Developer Resource Site

Results 1 to 6 of 6

Thread: bitmap smoothing for external pngs

  1. #1
    Junior Member
    Join Date
    Nov 2009
    Posts
    5

    bitmap smoothing for external pngs

    I'm having a helluva time trying to figure out the syntax for smoothing of dynamically loaded png's. It's such an easy function for as3, but seems very complicated in as2. Any help would be greatly appreciated. If anyone could help me figure out how to wirte the code and where to place it would be an extreme help. Thank you,
    here's my code courtesy of Lee Brimwell:
    Actionscript Code:
    import mx.utils.Delegate;
    import mx.transitions.Tween;
    import mx.transitions.easing.*;

    var numOfItems:Number;
    var radiusX:Number = 100;
    var radiusY:Number = 40;
    var centerX:Number = Stage.width / 4;
    var centerY:Number = Stage.height / 2;
    var speed:Number = .001;
    var perspective:Number = 3;
    var home:MovieClip = this;
    theText._alpha = 0;



    var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
    tooltip._alpha = 0;

    var myXML:XML = new XML();
    myXML.ignoreWhite=true;
    myXML.load("icons.xml");
    }
    myXML.onLoad = function(success){
    if (success) {
        var nodes = this.firstChild.childNodes;
        numOfItems = nodes.length;
        for(var i=0;i<numOfItems;i++)
        {
            var t = home.attachMovie("item","item"+i,i+1);
            t.angle = i * ((Math.PI*2)/numOfItems);
            t.onEnterFrame = mover;
            t.toolText = nodes[i].attributes.tooltip;
            t.content = nodes[i].attributes.content;
            t.icon.inner.loadMovie(nodes[i].attributes.image);
            t.r.inner.loadMovie(nodes[i].attributes.image);
            t.icon.onRollOver = over;
            t.icon.onRollOut = out;
            t.icon.onRelease = released;
        }
    }
    }

    function over()
    {
        //BONUS Section
        var sou:Sound = new Sound();
        sou.attachSound("sover");
        sou.start();
       
        home.tooltip.tipText.text = this._parent.toolText;
        home.tooltip._x = this._parent._x;
        home.tooltip._y = this._parent._y - this._parent._height/5;
        home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
        home.tooltip._alpha = 100;
    }

    function out()
    {
        delete home.tooltip.onEnterFrame;
        home.tooltip._alpha = 0;
    }

    //controls what happens when icon is clicked
    function released()
    {
        //BONUS Section
        var sou:Sound = new Sound();
        sou.attachSound("sdown");
        sou.start();
       
        home.tooltip._alpha = 0;
        for(var i=0;i<numOfItems;i++)
        {
            var t:MovieClip = home["item"+i];
            t.xPos = t._x;
            t.yPos = t._y;
            t.theScale = t._xscale;
            delete t.icon.onRollOver;
            delete t.icon.onRollOut;
            delete t.icon.onRelease;
            delete t.onEnterFrame;
            if(t != this._parent)
            {
                var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true);
                var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true);
                var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true);
            }
            else
            {
                var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,100,1,true);
                var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,100,1,true);
                var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,100,1,true);
                var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,200,1,true);
                var tw5:Tween = new Tween(theText,"_alpha",Strong.easeOut,0,100,1,true);
                theText.text = t.content;
                var s:Object = this;
                tw.onMotionStopped = function()
                {
                    s.onRelease = unReleased;
                }
            }
        }
    }

    function unReleased()
    {
        //BONUS Section
        var sou:Sound = new Sound();
        sou.attachSound("sdown");
        sou.start();
       
        delete this.onRelease;
        var tw:Tween = new Tween(theText,"_alpha",Strong.easeOut,100,0,0.5,true);
        for(var i=0;i<numOfItems;i++)
        {
            var t:MovieClip = home["item"+i];
            if(t != this._parent)
            {
                var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,0,t.theScale,1,true);
                var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,0,t.theScale,1,true);
                var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,0,100,1,true);
            }
            else
            {
                var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,100,t.theScale,1,true);
                var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,100,t.theScale,1,true);
                var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,t.xPos,1,true);
                var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,t.yPos,1,true);
                tw.onMotionStopped = function()
                {
                    for(var i=0;i<numOfItems;i++)
                    {
                        var t:MovieClip = home["item"+i];
                        t.icon.onRollOver = Delegate.create(t.icon,over);
                        t.icon.onRollOut = Delegate.create(t.icon,out);
                        t.icon.onRelease = Delegate.create(t.icon,released);
                        t.onEnterFrame = mover;
                    }
                }
            }
        }
    }


    function moveTip()
    {
        home.tooltip._x = this._parent._x;
        home.tooltip._y = this._parent._y - this._parent._height/2;
    }







    function mover()
    {
        this._x = Math.cos(this.angle) * radiusX + centerX;
        this._y = Math.sin(this.angle) * radiusY + centerY;
        var s = (this._y - perspective) /(centerY+radiusY-perspective);
        this._xscale = this._yscale = s*85;
        this.angle += this._parent.speed;
        this.swapDepths(Math.round(this._xscale) + 100);
    }

    this.onMouseMove = function()
    {
        speed = (this._xmouse-centerX)/6000;
    }

  2. #2
    Senior Member
    Join Date
    Aug 2000
    Location
    Montréal
    Posts
    14,141
    Set the forceSmoothing property to true. That's the easiest way to go.

    gparis

  3. #3
    Moderator whispers's Avatar
    Join Date
    Mar 2001
    Location
    CFA2h (respect the HEX)
    Posts
    12,755
    I think that only works for images in the library...etc

    for this to work, you need to attachBitmap of your loaded image..

    (well to be clear.. I dont believe I ever got it to work that way) =)

    Ive done the exact some on the same 3D carousel,.. I used a onLoadInit() callback for loading the images..

    which means you need to not use this:
    t.icon.inner.loadMovie(nodes[i].attributes.image);

    but a movieClipLoader() instance instead..


    hope this helps..

  4. #4
    Senior Member
    Join Date
    Aug 2000
    Location
    Montréal
    Posts
    14,141
    I think that only works for images in the library
    works with loaded images too.

    I've used the other technique, draw() with attachBitmap, works well too.

    gparis

  5. #5

  6. #6
    Programmer
    Join Date
    Aug 2007
    Posts
    173
    They both work fine, but
    Actionscript Code:
    this.forceSmoothing = true
    is a simple one line of code that will do the job. just make sure you put it on the onload, other wise it wont work
    Freelance: AS2, AS3, PHP, MySQL, JavaScript
    Skype: hunty93

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center