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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.01.2007, 14:05
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 1  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
По умолчанию Копирование чайлда

Всем привет. Потратил полночи и так не втыкнул в чем баг, а разрешить его надо просто позарез

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml" layout="absolute" currentState="partview" width="100%" height="100%">
<mx:Script>
<![CDATA[
private var cp:Panel
private function onCopyClick(event:MouseEvent):void
{
cp=pnl;
application.setCurrentState('fullview')
fullc.addChild(cp);
}
private function onCopyClick2(event:MouseEvent):void 
{
trace(playout+"|"+cp)
playout.addChild(cp);
if (fullc.getChildren().length>0)
{
fullc.removeAllChildren();
}
application.setCurrentState('partview') 
}
]]>
</mx:Script>
<mx:states>
<mx:State name="partview">
<mx:AddChild position="lastChild">
<mx:VBox id="playout" x="32" y="88" height="351" width="287"> 
<mx:Panel id="pnl" width="100%" height="100%" layout="absolute">
</mx:Panel>
</mx:VBox>
</mx:AddChild>
</mx:State>
<mx:State name="fullview">
<mx:AddChild position="lastChild">
<mx:VBox id="fullc" x="0" y="58" width="100%" height="100%"> 
</mx:VBox>
</mx:AddChild> 
</mx:State>
</mx:states>
<mx:ApplicationControlBar x="0" y="0" width="100%" height="50">
<mx:Button label="Button1" click="onCopyClick(event)"/> 
<mx:Button label="Button2" click="onCopyClick2(event)"/>
</mx:ApplicationControlBar>
</mx:Application>
пытаюсь копировать чайлда из стейта в стейт и вылетает ошибка RangeError: Error #2006: The supplied index is out of bounds. Что я упустил ри такой казалось бы простой операции???

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

Регистрация: Sep 2002
Сообщений: 30,787
Есть рабочий проект?

Старый 10.01.2007, 14:17
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 3  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
У меня проект в котором типа такого механизма надо использовать - а приведенный код это обычное MXML приложение.

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

Регистрация: Sep 2002
Сообщений: 30,787
Знаешь, вот проблема в том, что я не могу твой код скопировать, вставить и чтобы он работал…
ибо Could not resolve <mx:Application> to a component implementation.

UPD: Нашел косяк, щас посмотрю.

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

Регистрация: Sep 2002
Сообщений: 30,787
У тебя по дефолту стейт — partview, жмем на button1, попадаем в fullview и видим там нашу панельку, скопированную из предыдущего стейта. Ты это хотел сделать? Оно работает.
Или я тебя не до конца понял… Зачем тебе при возврате в partview копировать Panel, если он уже там есть?

Старый 10.01.2007, 15:13
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 6  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
Цитата:
Сообщение от __etc
У тебя по дефолту стейт — partview, жмем на button1, попадаем в fullview и видим там нашу панельку, скопированную из предыдущего стейта. Ты это хотел сделать? Оно работает.
Или я тебя не до конца понял… Зачем тебе при возврате в partview копировать Panel, если он уже там есть?
В хелпе написано что объект добавленный с помощью addChild не может одновременно существовать в разных контейнерах - поэтому копируя в VBox fullview он насколько я понимаю исчезает из контейнера VBox partview -- и соответственно при возврает нужно обратно его скопировать из fullview в partview

и даже если сделать вот так
Код:
	<mx:Script>
		<![CDATA[
			private var cp:Panel
			private function onCopyClick(event:MouseEvent):void
			{
				application.setCurrentState('fullview')
				fullc.addChild(playout.getChildAt(0));
			}
			private function onCopyClick2(event:MouseEvent):void
			{
				application.setCurrentState('partview')				
				//playout.addChild(fullc.getChildAt(0));
				
			}
		]]>
	</mx:Script>
все равно таже ошибка


Последний раз редактировалось Pablo4d; 10.01.2007 в 15:18.
Старый 10.01.2007, 15:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Толку от этого мало, машина падает при переходе в partview. Ща мучаю Nirth-а на эту тему…

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

Регистрация: Sep 2002
Сообщений: 30,787
Nirth предложил вариант с внешней панелью:
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" currentState="partView" width="100%" height="100%" verticalAlign="top" horizontalAlign="center">
 <mx:states>
  <mx:State name="fullView">
   <mx:SetProperty target="{panel1}" name="title" value="Full View"/>
   <mx:AddChild relativeTo="{panel1}" position="lastChild">
    <mx:Button label="Click Me" click="{mx.controls.Alert.show(&quot;booooo&quot;)}"/>
   </mx:AddChild>
   <mx:SetStyle target="{panel1}" name="horizontalAlign" value="center"/>
   <mx:SetStyle target="{panel1}" name="verticalAlign" value="middle"/>
   <mx:SetProperty target="{panel1}" name="layout" value="vertical"/>
  </mx:State>
  <mx:State name="partView">
   <mx:SetProperty target="{panel1}" name="width" value="50%"/>
   <mx:SetProperty target="{panel1}" name="title" value="Part View"/>
  </mx:State>
 </mx:states>
 <mx:ApplicationControlBar width="100%">
  <mx:Button label="Part View" id="button2" click="{if (currentState != 'fullView') currentState = 'fullView'}"/>
  <mx:Button label="Full View" id="button1" click="{if (currentState != 'partView') currentState = 'partView'}"/>
 </mx:ApplicationControlBar>
 <mx:Panel width="100%" height="100%" layout="absolute" id="panel1">
 </mx:Panel>
 
</mx:Application>
Судя по всему, ошибка была в том, что mx:AddChild не мог найти внутри себя Panel при переходе обратно в стейт…

Старый 10.01.2007, 15:44
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 9  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
интересно а почему табуляция нафиг сбивается...
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 10.01.2007, 15:51
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 10  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
Я смотрю Nirth (при всем уважении к нему) подменил уже цель - цель в динамическом переносе объекта из одного стейта в другой - здесь же мы имеем статическое определение стейтов. Даже вот такое писать не надо было
click="{if (currentState != 'fullView') currentState = 'fullView'}
стейты сами по сеье работают нормально , пока дело до динамики не доходит

Самое интересное что даже без стейтов
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%">
	<mx:Script>
		<![CDATA[
			private function onCopyClick(event:MouseEvent):void
			{
				playout2.addChild(playout.getChildAt(0));
			}
			private function onCopyClick2(event:MouseEvent):void
			{
				playout.addChild(playout2.getChildAt(0));
			}
		]]>
	</mx:Script>
	<mx:ApplicationControlBar x="0" y="0" width="100%" height="50">
		<mx:Button label="Button1" click="onCopyClick(event)"/>
		<mx:Button label="Button2" click="onCopyClick2(event)"/>
	</mx:ApplicationControlBar>
	<mx:VBox id="playout" x="67" y="97" height="272" width="239" creationPolicy="queued">
		<mx:Panel id="pnl" width="176" height="260" layout="absolute">
		</mx:Panel>
	</mx:VBox>
	<mx:VBox x="349" y="97" height="365" width="179" id="playout2" creationPolicy="queued">
	</mx:VBox>		
</mx:Application>
Перенос панельки все равно не проходит

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

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

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


 


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


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