![]() |
|
||||||||||
|
|||||
|
Всем привет. Потратил полночи и так не втыкнул в чем баг, а разрешить его надо просто позарез
<?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>
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Есть рабочий проект?
|
|
|||||
|
У меня проект в котором типа такого механизма надо использовать - а приведенный код это обычное MXML приложение.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Знаешь, вот проблема в том, что я не могу твой код скопировать, вставить и чтобы он работал…
ибо Could not resolve <mx:Application> to a component implementation. UPD: Нашел косяк, щас посмотрю. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
У тебя по дефолту стейт — partview, жмем на button1, попадаем в fullview и видим там нашу панельку, скопированную из предыдущего стейта. Ты это хотел сделать? Оно работает.
Или я тебя не до конца понял… Зачем тебе при возврате в partview копировать Panel, если он уже там есть? |
|
|||||
|
Цитата:
и даже если сделать вот так <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. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Толку от этого мало, машина падает при переходе в partview. Ща мучаю Nirth-а на эту тему…
|
|
|||||
|
Et cetera
Регистрация: 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("booooo")}"/>
</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>
|
|
|||||
|
Я смотрю 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. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|