![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
При клике photo1 присваивается другое значение, но на сцене это изменение не перерисовывается...
sp1.addChild(photo1); addEventListener(MouseEvent.CLICK, nextPhoto); public function nextPhoto(e:MouseEvent):void { photo1 = massiv[i+1]; } sp1.addChild(photo1); addEventListener(MouseEvent.CLICK, nextPhoto); public function nextPhoto(e:MouseEvent):void { sp1.removeChild(photo1); photo1 = massiv[i+1]; sp1.addChild(photo1); } Добавлено через 9 минут Какая прелесть... И этот работает. Вопрос в силе, почему первый код не пашет?
__________________
Мой профиль на фрилансе |
|
|||||
|
Цитата:
photo1 = massiv[i+1]; - тут ссылку переопределили на другой объект. прежний остался без ссылки но он существует в дисплей листе. |
|
|||||
|
Спасибо. Да у меня все представление об объектах перевернулось. С головы на ноги.
__________________
Мой профиль на фрилансе |
|
|||||
|
Цитата:
Если массив нужен только чтобы картинки менялись то лучше хранить только битмапДаты, во-парвых меньше памяти на хранение (хотя там фигня экономится), а во вторых минус всякие РемувЧилд АддЧилд. Добавлено через 36 секунд Ну и соответственно убрать из массива битмапы и хранить только битмапдаты напрямую.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
А такое присвоение никак не влияет на элементы массива? А то, че-то он через круг последний рисунок стал выдавать
__________________
Мой профиль на фрилансе |
|
|||||
|
Я бы примерно так сделал.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Только там i++ и i = 0 местами надо поменять. Че-то все равно доходит до последней фотки, а та на первую уже не меняется. Вывел содержимое массива на сцену - все элементы вдруг стали одной фоткой... Где ж я массив-то изменил?
package { import flash.display.*; import flash.text.*; import flash.events.MouseEvent; import flash.events.*; import flash.geom.*; import flash.net.*; public class ChangePhoto extends Sprite { var photo1:Bitmap; // верхний битмап var photo2:Bitmap; // нижний битмап var sp1:Sprite = new Sprite; //верхний спрайт var sp2:Sprite = new Sprite; //нижний спрайт var massiv:Array = []; //массив фоток var i = 0; //номер фотки, которая отображается сейчас public function ChangePhoto(massOfPhoto) { addChildAt(sp2,0); addChildAt(sp1,1); massiv = massOfPhoto; photo1 = massiv[i]; massiv.length<2 ? photo2 = massiv[i] : photo2 = massiv [i+1]; i++; photo1.scaleX = photo1.scaleY = photo2.scaleX = photo2.scaleY = .1; photo2.x = photo2.y = 10; sp1.addChild(photo1); sp2.addChild(photo2); addEventListener(MouseEvent.CLICK, nextPhoto); } public function nextPhoto(e:MouseEvent):void { photo1.bitmapData = massiv[i].bitmapData; photo1.scaleX = photo1.scaleY = .1; i>=massiv.length-1 ? i = 0 : i++; photo2.bitmapData = massiv[i].bitmapData; } } } Не без помощи умных людей проблема разрешилась. Загвоздка все в тех же ссылках на объекты. Я изменил photo1 и photo2 на элементы массива и управлял ими, а не объектами на сцене. Рабочий код класса, который принимает в качестве параметра массив битмапов и чередует их на сцене на событие клика: package { import flash.display.*; import flash.text.*; import flash.events.MouseEvent; import flash.events.*; import flash.geom.*; import flash.net.*; public class ChangePhoto extends Sprite { var photo1:Bitmap; // верхний битмап var photo2:Bitmap; // нижний битмап var sp1:Sprite = new Sprite; //верхний спрайт var sp2:Sprite = new Sprite; //нижний спрайт var massiv:Array = []; //массив фоток var i = 0; //номер фотки, которая отображается сейчас public function ChangePhoto(massOfPhoto) { addChildAt(sp2,0); addChildAt(sp1,1); massiv = massOfPhoto; photo1 = new Bitmap(massiv[i].bitmapData); massiv.length<2 ? photo2 = new Bitmap(massiv[i].bitmapData) : photo2 = new Bitmap(massiv[i+1].bitmapData); i++; photo2.x = photo2.y = 10; sp1.addChild(photo1); sp2.addChild(photo2); addEventListener(MouseEvent.CLICK, nextPhoto); } public function nextPhoto(e:MouseEvent):void { photo1.bitmapData = massiv[i].bitmapData; i>=massiv.length-1 ? i = 0 : i++; photo2.bitmapData = massiv[i].bitmapData; } } }
__________________
Мой профиль на фрилансе |
|
|||||
|
Цитата:
Ну разрешился вопрос и ок ![]()
__________________
Кто к нам с чем для чего - тот у нас того от того. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:13. |
|
|
« Предыдущая тема | Следующая тема » |
|
|