-
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; }
-
Set the forceSmoothing property to true. That's the easiest way to go.
gparis
-
Senior Member
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..
Last edited by whispers; 04-21-2010 at 04:07 PM.
-
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
-
Senior Member
yes I was referring to the draw() / attachBitmap() method..
-
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
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|