Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.04.2007, 13:26
asuri вне форума Посмотреть профиль Отправить личное сообщение для asuri Найти все сообщения от asuri
  № 1  
Ответить с цитированием
asuri

Регистрация: Oct 2006
Сообщений: 44
По умолчанию Изменение порядка следования компонентов

Добрый день. Возникла проблема следующего характера: есть несколько Panel. Одна накладывается на другую (при этом они неполностью скрываются друг под другом и есть возможность кликнуть на какую-то Panel-ку находящуюся внизу). Нужно что бы при клике на нижнюю панельку, она всплывала поверх остальных. Как окна в винде ). Подскажите плиз какое свойство за это отвечает. Не могу придумать как это реализовать.

Старый 05.04.2007, 13:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Приведи код, как ты их создаешь. А лучше весь.

Старый 05.04.2007, 13:44
asuri вне форума Посмотреть профиль Отправить личное сообщение для asuri Найти все сообщения от asuri
  № 3  
Ответить с цитированием
asuri

Регистрация: Oct 2006
Сообщений: 44
Ну с этим проблемы )) Там килобайты кода. Если в двух словах, то есть функция которая создаёт panel и кладёт их прямо в корень аппликейшена, хотя можно сделать, что бы она кидала их в какой-то контейнер. Не суть. Причём панельки можно ресайзить и перемещать (написан экстенд класса panel, позволяющий это делать). Короче иммитируется работа с окнами в винде. Теоретически я конечно могу просто помещать изначально все панельки в какой то контейнер и при необходимости изменять их порядок. Но это какое то кривое решение, как мне кажется

Старый 05.04.2007, 14:05
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Копай в сторону PopUpManager.

Старый 05.04.2007, 20:23
asuri вне форума Посмотреть профиль Отправить личное сообщение для asuri Найти все сообщения от asuri
  № 5  
Ответить с цитированием
asuri

Регистрация: Oct 2006
Сообщений: 44
Копание отчасти помогло. Днлаю так:
Код:
var win:_Window=new _Window();
PopUpManager.addPopUp(win as IFlexDisplayObject,_parent);
В итоге всё работает как надо. Но! Хочется в определённый момент взять и поменять родителя у окошка. Принцип такой: окна создаются описанным выше способом и кидаются в корень аппликейшена. ещё в корне аппликейшена есть ApplicationControlBar.
В определённый момент я хочу перенести одно из окон в ApplicationControlBar, а так не получается. Точнее перенести получается, но после этого, в случае если я пытаюсь создать ещё одно окно или кликнуть по одному из существующих, выдаётся ошибка
Код:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
	at flash.display::DisplayObjectContainer/getChildIndex()
	at mx.managers::SystemManager/getChildIndex()[C:\dev\GMC\sdk\frameworks\mx\managers\SystemManager.as:1251]
	at mx.managers::SystemManager/mx.managers:SystemManager::mouseDownHandler()[C:\dev\GMC\sdk\frameworks\mx\managers\SystemManager.as:2417]
Пробовал PopUpManager.removePopUp(win); Но так окно совсем удаляется.
если поставить свойство win.isPopUp=false; то у окна действительно пропадают свойства всплывания и перетаскивания, но при этом всёравно выскакивает та же ошибка.

Подскажите как это победить.


Последний раз редактировалось asuri; 05.04.2007 в 20:27.
Старый 06.04.2007, 12:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Что-то мне кажется второй параметр неверен. А классы так не называют («_Window»).

Старый 06.04.2007, 13:39
asuri вне форума Посмотреть профиль Отправить личное сообщение для asuri Найти все сообщения от asuri
  № 7  
Ответить с цитированием
asuri

Регистрация: Oct 2006
Сообщений: 44
Ну нет же, я просто забыл дописать что _parent ссылается на аппликейшн.
Вот набросал простой пример, как и что я пытаюсь сделать.
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 <mx:Script>
  <![CDATA[
   import mx.controls.Button;
   import mx.effects.effectClasses.ZoomInstance;
   import mx.effects.Effect;
   import mx.containers.Panel;
   import mx.managers.PopUpManager;
   import mx.core.IFlexDisplayObject;
   public var i:int=0;

   
   public function cr():void{
    var p:Panel=new Panel();
    i++;
    p.name='window_'+i;
    p.title='Lex_'+i;
    p.width=150;
    p.height=100;
    p.x=int(Math.random()*(screen.width-p.width));
    p.y=int(Math.random()*(screen.height-p.height));
    var b:Button=new Button();
    b.label='min';b.name=p.name;
    b.addEventListener(MouseEvent.CLICK,min);
    p.addChild(b);
    PopUpManager.addPopUp(p,this);
    //this.addChild(p);
   }
      
   public function min(e:Event):void{ 
	var winName:String=e.target.name;
	WinBar.addChild(systemManager.getChildByName(winName));
   }
   
  ]]>
 </mx:Script>
 <mx:Button x="25" y="22" label="Создать окно" click="cr()"/>
 
 <mx:ApplicationControlBar height="75" id="WinBar" width="80%" horizontalCenter="0" bottom="10">
 </mx:ApplicationControlBar>
</mx:Application>
После нажатия на кнопку min, окно действительно попадает в ApplicationControlBar, но если потом кликнуть в любое место мувика - вываливается ошибка:
Код:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
	at flash.display::DisplayObjectContainer/getChildIndex()
	at mx.managers::SystemManager/getChildIndex()[C:\dev\GMC\sdk\frameworks\mx\managers\SystemManager.as:1251]
	at mx.managers::SystemManager/mx.managers:SystemManager::mouseDownHandler()[C:\dev\GMC\sdk\frameworks\mx\managers\SystemManager.as:2417]

Старый 06.04.2007, 14:01
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Удалять попап надо. Кстати, описанной ошибки я получить не смог.

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 <mx:Script>
  <![CDATA[
   import mx.controls.Button;
   import mx.effects.effectClasses.ZoomInstance;
   import mx.effects.Effect;
   import mx.containers.Panel;
   import mx.managers.PopUpManager;
   import mx.core.IFlexDisplayObject;
   public var i:int=0;

   
   public function cr():void{
    var p:Panel=new Panel();
    i++;
    p.name='window_'+i;
    p.title='Lex_'+i;
    p.width=150;
    p.height=100;
    p.x=int(Math.random()*(screen.width-p.width));
    p.y=int(Math.random()*(screen.height-p.height));
    var b:Button=new Button();
    b.label='min';
    b.name=p.name;
    b.addEventListener(MouseEvent.CLICK,min);
    p.addChild(b);
    PopUpManager.addPopUp(p,this);
    //this.addChild(p);
   }
      
   public function min(e:Event):void{ 
	var win:Panel = (e.target as Button).parent as Panel; // :-)
	PopUpManager.removePopUp(win);
	WinBar.addChild(win);
   }
   
  ]]>
 </mx:Script>
 <mx:Button x="25" y="22" label="Создать окно" click="cr()"/>
 
 <mx:ApplicationControlBar height="75" id="WinBar" width="80%" horizontalCenter="0" bottom="10">
 </mx:ApplicationControlBar>
</mx:Application>

Старый 06.04.2007, 14:15
asuri вне форума Посмотреть профиль Отправить личное сообщение для asuri Найти все сообщения от asuri
  № 9  
Ответить с цитированием
asuri

Регистрация: Oct 2006
Сообщений: 44
Да спасибо. Так работает.
Кстати а почему классы так не называют ? Мне показалось это удобным ) во всплывающей подсказке такие классы всегда сверху.

Старый 06.04.2007, 14:21
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Если это ваш такой стандарт именования, то лучше никому свои проекты не показывать. А если показывать, то придерживаться официальных стандартов именования.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:52.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.