Autor | Zpráva | ||
---|---|---|---|
honza009 Profil |
#1 · Zasláno: 25. 2. 2013, 23:35:34
Ahoj,
stáhl jsem si jedno hotové řešení textového tickeru, který je napojen na xml soubor a potřeboval bych zajistit, aby se jednotlivé tagy vypisovaly hned po sobě. Mohl by mi někdo poradit, jak na to? Pracuji se statickou grafikou a actionscript mi opravdu nic neříká. Říkejte to ale šéfovi :) Díky moc za případnou pomoc! Zde AS (konkrétně pak funkce sliderticker - basic_ticker) : package { import flash.events.Event; import flash.events.MouseEvent; import flash.display.Sprite; import flash.utils.getTimer; public class TickerSprite extends Sprite { static const kEffectDuration = 2000; static const kReadDuration = 2000; public static var mcCtr = 0; static var tickerItems = []; static var tickerMCs = []; static var tickerIdx = 0; var mc:ticker_mc; var speed; var isMouseIn; var idx; var srcScale, srcX, srcY, srcAlpha, dstScale, dstX, dstY, dstAlpha; var startTime; var tstate = -1; public function TickerSprite(idx) { mc = new ticker_mc(); this.idx = idx; addChild(mc); mc.ticker_txt.autoSize = "left"; // mc.ticker_txt.html = true; speed = 5; isMouseIn = false; addEventListener(MouseEvent.MOUSE_MOVE, myMouseMove); addEventListener(Event.ENTER_FRAME, cycleTicker); } public static function setTickerItems(itsItems) { tickerItems = itsItems; } public static function addTickerItem(itsItem) { tickerItems.push(itsItem); } public static function startTicker(parMC) { var mc = new TickerSprite(0); parMC.addChild(mc); tickerMCs.push(mc); mc = new TickerSprite(1); parMC.addChild(mc); tickerMCs.push(mc); tickerMCs[0].getTickerItem(0); tickerMCs[1].visible = false; } function myMouseMove(evt) { if (mouseY <= stage.stageHeight/3 && mouseY >= -stage.stageHeight/3) { speed = 5; isMouseIn = true; } } function setTweenTargets(dstX,dstY,dstScale,dstAlpha) { this.srcScale = this.scaleX; this.srcX = this.x; this.srcY = this.y; this.srcAlpha = this.alpha; this.dstScale = dstScale; this.dstX = dstX; this.dstY = dstY; this.dstAlpha = dstAlpha; } function setupDebut(n) { this.startTime = getTimer(); if (n == undefined || n == 'scroll' || n == '') { // basic leftwards scroll effect mc.ticker_txt.x = 0; mc.ticker_txt.y = -mc.ticker_txt.textHeight/2; this.scaleX = 1; this.scaleY = 1; this.alpha = 1; this.x = stage.stageWidth; this.y = stage.stageHeight/2; this.tstate = -1; } else { mc.ticker_txt.x = -mc.ticker_txt.textWidth/2; mc.ticker_txt.y = -mc.ticker_txt.textHeight/2; switch (n) { case 'left': // from left this.alpha = 1; this.x = -mc.ticker_txt.textWidth/2; this.y = stage.stageHeight/2; this.scaleY = this.scaleX = stage.stageWidth/(mc.ticker_txt.textWidth+20); setTweenTargets(stage.stageWidth/2, this.y, this.scaleX,1); break; case 'right': // from right this.alpha = 1; this.x = stage.stageWidth+mc.ticker_txt.textWidth/2; this.y = stage.stageHeight/2; this.scaleY = this.scaleX = Math.min(1,stage.stageWidth/(mc.ticker_txt.textWidth+20)); setTweenTargets(stage.stageWidth/2, this.y, this.scaleX,1); break; case 'top': // from top case 'up': this.x = stage.stageWidth/2; this.y = 0 - mc.ticker_txt.textHeight/2; this.scaleY = this.scaleX = Math.min(1,stage.stageWidth/(mc.ticker_txt.textWidth+20)); this.alpha = 1; setTweenTargets(this.x, stage.stageHeight/2, this.scaleX,1); break; case 'down': // from bottom case 'bottom': this.alpha = 1; this.x = stage.stageWidth/2; this.y = stage.stageHeight+mc.ticker_txt.textHeight; this.scaleY = this.scaleX = Math.min(1,stage.stageWidth/(mc.ticker_txt.textWidth+20)); setTweenTargets(this.x, stage.stageHeight/2, this.scaleX,1); break; case 'in': // 3d fly-in/out from small case 'tiny': this.alpha = 0; this.x = stage.stageWidth/2; this.y = stage.stageHeight/2; this.scaleX = this.scaleY = .01; setTweenTargets(this.x, this.y, Math.min(1,stage.stageWidth/(mc.ticker_txt.textWidth+20)),1); break; case 'out': // 3d fly-in/out from large case 'big': this.alpha = 0; this.x = stage.stageWidth/2; this.y = stage.stageHeight/2; this.scaleY = this.scaleX = stage.stageWidth*10/(mc.ticker_txt.textWidth+20); setTweenTargets(this.x, this.y, Math.min(1,stage.stageWidth/(mc.ticker_txt.textWidth+20)),1); break; default: trace("debut: undefined type for " + this.idx + " : " + n); } } } function setupExit(n) { this.startTime = getTimer(); switch (n) { case 'left': // exit to left setTweenTargets(-mc.ticker_txt.textWidth/2, this.y, this.scaleX,1); break; case 'right': // exit to right setTweenTargets(stage.stageWidth+mc.ticker_txt.textWidth/2, this.y, this.scaleX,1); break; case 'up': // exit up case 'top': setTweenTargets(this.x, -mc.ticker_txt.textHeight/2, this.scaleX,1); break; case 'down': // exit down case 'bottom': case 'bot': setTweenTargets(this.x, stage.stageHeight+mc.ticker_txt.textHeight/2, this.scaleX,1); break; case 'small': // exit small case 'in': setTweenTargets(this.x, this.y, .01, 0); break; case 'big': // exit big case 'out': setTweenTargets(this.x, this.y, stage.stageWidth*100/(mc.ticker_txt.textWidth+20), 0); break; default: trace("exit: undefined type for " + this.idx); } } public function getTickerItem(n) { visible = true; this.idx = n; this.tstate = 0; mc.ticker_txt.htmlText = tickerItems[n].txt; setupDebut(tickerItems[n].debut); } // This function animates the text // function cycleTicker(evt) { if (!visible) return; var queueNext = false; var r; switch (tstate) { case -1: // regular scroll, as in basic_ticker this.x -= this.speed; queueNext = (this.x <= -mc.ticker_txt.textWidth); if (queueNext) this.visible = false; break; case 0: // debut effect? case 2: // or exit effect? // Figure out where in the tween we are r = (getTimer() - this.startTime)/kEffectDuration; if (r >= 1) { // Done tweening? set vars to final state and move on this.scaleX = this.scaleY = this.dstScale; this.alpha = this.dstAlpha; this.x = this.dstX; this.y = this.dstY; this.startTime = getTimer(); this.tstate++; if (this.tstate >= 3) this.visible = false; // trace(" state " + this.state); } else if (r < 0) { // shouldn't happen trace(" negative r! " + r + " " + this.startTime + " " + getTimer()); } else { // ease out for exit effects, or ease in for debut effects if ((tstate == 0 && r > .5) || (tstate == 2 && r < .5)) { r = r*r*(3-2*r); r = r*r*(3-2*r); } this.scaleX = this.scaleY = this.srcScale + (this.dstScale-this.srcScale)*r; this.x = this.srcX + (this.dstX - this.srcX)*r; this.y = this.srcY + (this.dstY - this.srcY)*r; this.alpha = this.srcAlpha + (this.dstAlpha - this.srcAlpha)*r; } break; case 1: // read pause r = (getTimer() - this.startTime)/kReadDuration; if (r > 1 && this.isMouseIn != true) { queueNext = true; this.tstate++; this.setupExit(tickerItems[this.idx].exit); } break; default: trace(" unsupported state " + this.state); } if (queueNext) { mcCtr = (mcCtr + 1) % 2; tickerIdx = (tickerIdx+1) % tickerItems.length; tickerMCs[mcCtr].getTickerItem(tickerIdx); } } } // end class } // end package [/pre] |
||
Časová prodleva: 12 let
|
0