![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 1
|
Flex4
Проблема такая. Есть в приложении два BorderContainer. Разных размеров. Назовем их родительские. Внутри каждого еще по одному BorderContainerу. Это дочерние контейнеры. Задача. Поменять местами дочерние контейнеры у родителей. Когда просто вызываем метод addElement, без всяких выкрутасов все отлично работает Добавляем эфект Move3D для визуализации перемещения по осям X и Y после вызова addElement в родительских контейнерах ничего не отображается. И не возможно правильно выставить x и y для дочерних контейнеров. Просто никакой реакции. Без эффекта все отлично работает. В чем дело? Такое ощущение что внутри родительских контейнеров площадь увеличилась и почему то центр сместился, поэтому мы не можем точно спозиционироваться. Дело в том что на бэкграунде родительских контейнеров ровно по середине отображается индекс 0,1,2 Так вот эта надпись смещается почему-то //Все методы относятся к классу родительского контейнера на основе BorderContainer //Метод для перемещения дочерних контейнеров. public function MoveToMain(disp:MBVideo, disp0:MBVideo):void { this.Cur4MoveDisp = disp; // сохраняем ссылки для того чтобы, по завершении эффекта перемещения прицепить их к родителям this.Cur4MoveDisp0 = disp0; disp.x = disp.pFrame.x; disp.y = disp.pFrame.y; disp.pFrame.pApp.addElement(disp); // Добавляем дочерний контейнер на самый верхний уровень чтоб плыл поверху disp0.pFrame.pApp это ссылка на контейнер приложения // подготавливаем эффект для первого контейнера this.moveEffect.target = disp; this.moveEffect.xFrom = disp.x; this.moveEffect.yFrom = disp.y; this.moveEffect.xBy = disp0.pFrame.x - disp.x; this.moveEffect.yBy = disp0.pFrame.y - disp.y; this.moveEffect.duration = 1000; this.moveEffect.repeatCount = 1; // подготавливаем эффект для второго контейнера disp0.pFrame.pApp.addElement(disp0); // тоже добавляем на верхний уровень this.moveEffect0.target = disp0; this.moveEffect0.xFrom = disp0.x; this.moveEffect0.yFrom = disp0.y; this.moveEffect0.xBy = -(disp0.pFrame.x - disp.x); this.moveEffect0.yBy = -(disp0.pFrame.y - disp.y); this.moveEffect0.duration = 1000; this.moveEffect0.repeatCount = 1; this.moveEffect.play(); this.moveEffect0.play(); } // События на завершение перемещения protected function MoveEnd():void { var frmMain:MBFrame = this.pApp.arrFrames[0]; frmMain.DockDisplay(this.Cur4MoveDisp); } protected function MoveEnd0():void { this.DockDisplay(this.Cur4MoveDisp0); } // метод парковки дочернего контейнера // тут устанавливаем новые размеры и другие атрибуты для дочерних контейнеров public function DockDisplay(display:MBVideo):void { display.width = this.width; display.height = this.height; display.x = 0; display.y = 0; this.curVideo = display; this.curVideo.pFrame = this; this.curVideo.isInMainFrame = this.isMainFrame; this.addElement(display); display.ResizeDisplay(); if (this.isMainFrame) this.curVideo.SetLayout4Main(); else this.curVideo.SetLayout4NotMain(); } // Причем если в методе MoveToMain // просто сразу вызывать DockDisplay для обоих то все прекрасно работает public function MoveToMain(disp:MBVideo, disp0:MBVideo):void { disp.pFrame.pApp.addElement(disp); disp0.pFrame.pApp.addElement(disp0); disp0.pFrame.DockDisplay(disp); this.DockDisplay(disp0); } в одном родительском контейнере пусто, а другой отображает дочерний со смещением в два раза где-то. Т.е. это значит в первом контейнере тоже есть дочерний элемент просто его не видно так как он за края выходит Как получается, такое разрушительное действие на координаты x и y после отработки эфекта? Добавлено через 8 часов 53 минуты Проблема решается заменой эффекта Move3D на обычный Move. В чем было дело пока не понял. Видимо Move3D как-то по другому с координатами обращается Добавлено через 8 часов 54 минуты Проблема решается заменой эффекта Move3D на обычный Move. В чем было дело пока не понял. Видимо Move3D как-то по другому с координатами обращается Последний раз редактировалось atn; 25.04.2010 в 06:28. Причина: Flex4 |
![]() |
Часовой пояс GMT +4, время: 02:56. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| addElement , Move3D |
|
|