2010-11-26 53 views
0

在我的Flex應用程序中,我維護着5張圖片。當用戶點擊'下一個'按鈕時,它應該顯示一個圖像'image1'。如果該按鈕再次點擊,則image1應該替換爲image2等。我基本上遵循'image.visible'方法。但圖像並排顯示。我認爲這不是正確的程序。任何選擇?在此先感謝如何替換flex 3中的圖像?


這是我的代碼。我將所有圖像和按鈕保留在mx:面板中。即使我使用了不工作的x和y位置。

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
<mx:Panel 
title = 'Learn and Test your Knowledge' 
height = '80%' 
paddingBottom = '10' paddingTop = '10' 
paddingLeft = '10' paddingRight = '10' 
borderAlpha='0.20' fontFamily="Verdana" fontSize="15" color="#F30C32" backgroundImage="@Embed(source='../images/lad.jpg')" width="413" x="139"> 
<mx:Script> 

    <![CDATA[ 
public function nextEvent():void 
     { 
     // here i should write next button code 
     } 

    ]]> 
</mx:Script> 

<mx:Image source="../images/image1.jpg" visible="true" id="image1" /> 

<mx:Image source="../images/image3.jpg" visible="true" id="image2"/> 
<mx:Image source="../images/image3.jpg" visible="true" id="image3"/> 

<mx:Button id="next" visible="false" click="nextEvent()"> 

</mx:Button> 

+1

您是否已將所有圖像包含在HBox中?這將把他們排列在一起。嘗試將它們放入Canvas標籤中。如果情況並非如此,你可以發佈一個代碼來展示你的圖片,以便我們看到發生了什麼? – martineno 2010-11-26 06:00:07

回答

1

如果您只顯示一個圖像,最好的方法是隻使用一個圖像組件。您可以使用嵌入的圖像和引用來創建一個數組或矢量,以更改圖像組件上的源屬性。下面是一個例子:(下面的代碼將與任何佈局/容器中工作)

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
    <mx:Image id="image" click="imageClick()" source="{new images[0]()}" /> 

    <mx:Script> 
     <![CDATA[ 
      [Embed(source="assets/1.png")] 
      private var image1:Class; 

      [Embed(source="assets/2.png")] 
      private var image2:Class; 

      [Embed(source="assets/3.png")] 
      private var image3:Class; 

      private var images:Array = [image1, image2, image3]; 

      private var imageIndex:uint = 0; 

      protected function imageClick():void 
      { 
       imageIndex++; 
       if(imageIndex == images.length) imageIndex = 0; 

       image.source = new images[imageIndex](); 
      } 

     ]]> 
    </mx:Script>   
</mx:Canvas> 
+0

感謝greg。沒關係。它工作正常。我應該嵌入聲音文件,並提供Sound類的參考嗎?我想在內部爲每個圖像播放聲音。它會完成嗎? – hemanth 2010-11-26 14:33:29

0

指定圖像作爲相同的X和Y位置和玩弄他們的visibility.It肯定會工作。

+0

我假設你使用了Canvas作爲container.Do按照martineno的建議,然後如我所說的保持x和y一樣:) – himanshu 2010-11-26 06:31:58

0

ViewStack是我選擇它非常適合在這個場合。 一次僅顯示一個組件,對於下一個操作,它將自動覆蓋其新組件的前一個內容。

<mx:ViewStack id="myViewStack" borderStyle="solid" width="100%" height="80%"> 

     <mx:Canvas id="one" click="myViewStack.selectedChild=two;"> 
      <mx:Image source="assets/1.png" /> 
     </mx:Canvas> 

     <mx:Canvas id="two" click="myViewStack.selectedChild=three;"> 
      <mx:Image source="assets/2.png" /> 
     </mx:Canvas> 

     <mx:Canvas id="three" click="myViewStack.selectedChild=four;"> 
      <mx:Image source="assets/3.png" /> 
     </mx:Canvas> 

     <mx:Canvas id="four" click="myViewStack.selectedChild=five;"> 
      <mx:Image source="assets/4.png" /> 
     </mx:Canvas> 

     <mx:Canvas id="five" click="myViewStack.selectedChild=one;"> 
      <mx:Image source="assets/5.png" /> 
     </mx:Canvas> 

    </mx:ViewStack>