|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2009
Сообщений: 122
|
Копирование содержимого Image в другой Image
Здравствуйте уважаемые программисты.
Подскажите плиз как скопировать содержимое Image в другой Image. Я тут пробовал такой код: protected function button1_clickHandler(event:MouseEvent):void { var disO:Array=new Array(); disO.push(first.content); second.data=disO[0]; } <mx:Image id="first" source="img1.jpg" width="523" height="318"/> <mx:Image id="second" width="523" height="318"/> <s:Button click="button1_clickHandler(event)"/> |
|
|||||
Регистрация: Dec 2009
Сообщений: 122
|
Спасибо за то, что вы откликнулись alatar.
У меня появился еще вопрос. <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; private var arr:ArrayCollection=new ArrayCollection(); protected function button1_clickHandler(event:MouseEvent):void { arr_push();//Добавляем содержимое firstImage в массив secondImage.data=arr[0];//Отображаем secondImage с новым содержимым firstImage.load("img2.jpg");//Загружаем в firstImage новое изображение } protected function button2_clickHandler(event:MouseEvent):void { arr_push();//Добавляем содержимое firstImage в массив secondImage.data=arr[1];//Отображаем secondImage с новым содержимым } protected function button3_clickHandler(event:MouseEvent):void { //Почему после выполнения этой строки secondImage теряет все содержимое????? secondImage.data=arr[0]; } //Добавляем содержимое firstImage в массив private function arr_push():void { var bm1:Bitmap=Bitmap(firstImage.content); arr.addItem(new Bitmap(bm1.bitmapData)); } ]]> </fx:Script> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <s:layout> <s:HorizontalLayout/> </s:layout> <s:VGroup> <mx:Image id="firstImage" width="523" height="318" source="img1.jpg"/> <s:Button id="button1" label="button1" click="button1_clickHandler(event)"/> <s:Button id="button2" label="button2" click="button2_clickHandler(event)"/> <s:Button id="button3" label="button3" click="button3_clickHandler(event)"/> </s:VGroup> <mx:Image id="secondImage" width="523" height="318"/> </s:Application> Далее я кликаю по второй кнопке и secondImage получает уже новое содержимое firstImage, все ок. Далее я кликаю по третьей кнопке и secondImage должен получить старое содержимое firstImage, которое сохранено в массиве, но этого не происходит, а вместо этого secondImage остается полностью пустой. Подскажите плиз кто знает что это за чудеса происходят. P.S. Вместо secondImage.data пробовал писать secondImage.source и вместо ArrayCollection пробовал использовать Array, ничего не помогает. Внизу прикреплены картинки из проекта (они просто в каталоге src должны быть). Проект выложить не смог из-за ограничений на размер архива. |
|
|||||
Регистрация: Dec 2009
Сообщений: 122
|
alatar я, если честно, не совсем понял о чем вы мне пытаетесь сказать, но похоже вы имеете ввиду, что я в массив закидываю ссылки на secondImage, а не самостоятельные объекты.
Вот я переписал функцию arr_push. //Добавляем содержимое firstImage в массив private function arr_push():void { var bm1:Bitmap=Bitmap(firstImage.content); var bmd:BitmapData=new BitmapData(523,318,false,0xFFFF0000); bmd.draw(bm1); var bm2:Bitmap=new Bitmap(bmd); arr.addItem(bm2); } Подскажите плиз в чем дело. |
|
|||||
Цитата:
Распишу подробнее. 1. Первая картинка ложится в массив. 2. Первая картинка запихивается в second 3. В массив ложится вторая картинка. 4. Вторая картинка запихивается в second. При этом second при выгрузке первой картинки обнуляет ей bitmapData. 5. Первая картинка запихивается в second. Но битмапы у нее уже нет. Как вариант решения проблемы, храните в массиве только BitmapData и создавайте новый битмап перед запихиванием в second. |
|
|||||
Регистрация: Dec 2009
Сообщений: 122
|
alatar большое вам спасибо, наконец то работает!
|
Часовой пояс GMT +4, время: 00:50. |
|
« Предыдущая тема | Следующая тема » |
Теги |
image |
|
|