2012-03-18 45 views
0

我要問的可能是完全無稽之談/基本的或其他的。因爲我的AS知識太少了。希望我能正確解釋如何使用動畫添加Sprite對象?

我正在努力創建一個動態滑動橫幅動畫。我創建動態的原因是我想從XML文件加載橫幅圖像和標題。

所以我找到了一個帶.as和.xml文件的示例項目。它做我想要的,但它沒有動畫。你可以在這裏看到演示:
http://active.tutsplus.com/tutorials/actionscript/create-an-image-rotator-in-flash-using-xml-and-actionscript-3-0/

正如你所看到的,下面有一個透明的信息面板。 下面的代碼如何被創建它:

private var infoPanel:Sprite = new Sprite(); 
private var titleField:TextField = new TextField(); 
private var description:TextField = new TextField(); 

private function createInfoPanel():void 
{ 
infoPanel.graphics.beginFill(0x000000, 0.5); 
infoPanel.graphics.drawRect(0, 0, 967, 138); 
infoPanel.graphics.endFill(); 

titleField.text = xml.children()[infoCounter]. @ title; 
titleField.x = 50; 
titleField.y = 25; 

description.text = xml.children()[infoCounter]. @ description; 
description.x = 52; 
description.y = 51; 

infoPanel.y = 300; 

infoPanel.addChild(titleField); 
infoPanel.addChild(description); 

addChild(infoPanel); 
} 

當我這樣創建它,沒有動畫,它是靜態的,只有文字正在發生變化。

這就是我想做的事:
當創建它,
來了,從屏幕下方,
滑動到頂部,
然後文本出現,
影像學改變之前,文本消失
比面板滑下來然後圖像變化。

我該如何執行此操作? 謝謝。

P.S.您可以在鏈接中看到整個代碼。

編輯:隨時查看我的源文件。
https://rapidshare.com/files/2794372874/Src.rar

回答

0

創建具有代碼的動畫通常是與補間引擎來實現。這裏是一個:​​。

所以,如果你想要一個infoPanel來自下面:

infoPanel.y = 400; //position from where animation begins; x stays the same 
TweenLite.to(infoPanel, 1.2 /* seconds */, {y:300}); 

那麼你可以使用延遲特性的延遲一定時間後,開始另一個動畫:

description.alpha = 0; 
TweenLite.to(description, 0.5, {alpha: 1, delay: 1.2}); 

也不要忘記import com.greensock.*;在課程開始時。

+0

嗨Miha,謝謝你的回答。等待答案,在你之前,我創建了一個帶有動畫片段的新圖層,所以我不需要爲面板再添加動畫,但是現在我有兩個問題,如果可以的話,你可以看一下嗎?http://forums.adobe.com/messag e/4274512#4274512 – kubilay 2012-03-18 22:07:43

+1

嗨,我爲您最後一個問題添加了評論。 – Miha 2012-03-19 10:44:34

1

如果你正在做的橫幅廣告,我不會使用外部吐溫庫,他們將推動你的創造性的體重超過標準IAB(40KB - 50KB)

import flash.display.Sprite; 
import fl.transitions.Tween; 
import fl.transitions.TweenEvent; 
import fl.transitions.easing.*; 
import flash.events.*; 

public class Test extends Sprite 
{ 
    private var imageTween:Array = []; 
    private var infoPanel:Sprite = new Sprite(); 

    public function Test() 
    { 
     imageTween.push(new Tween(infoPanel, 'y', Regular.easeIn, 0, 300, .7, true); 
     imageTween[imageTween.length-1].addEventListener(TweenEvent.MOTION_FINISH, removeTween); 
    } 
    private function removeTween(e:TweenEvent):void 
    { 
     e.target.removeEventListener(TweenEvent.MOTION_FINISH, removeTween); 
     imageTween = []; 
    } 
} 

你一定要記住有你的動畫在垃圾收集器無法獲取它們的地方(在一個數組中),否則它們會在它們完成之前被清除:(

+0

我認爲你是對的。第一次開放時,我的旗幟已經很慢了。無論如何,我已經創建了一個加載txt文件的新圖層。現在它運作良好。唯一的問題是,除非我清除歷史記錄,否則瀏覽器不刷新XML和TXT源代碼。但我想這是另一個問題。 – kubilay 2012-03-21 07:27:16

+1

使用這些頭文件用PHP寫XML:<?php header(「Cache-Control:no-cache,must-revalidate」); header(「Content-Type:text/xml」); echo''; – 2012-03-21 09:45:03

+0

文件擴展名是什麼?將它包含在PHP代碼中的xml文件?而已?我在問,因爲我也需要刷新txt文件。 – kubilay 2012-03-21 10:54:03