Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Глубина компонента? (http://www.flasher.ru/forum/showthread.php?t=87053)

eXplozive 27.10.2006 18:10

Глубина компонента?
 
Сделал приложение на флексе ... Допустим есть главный файл в который подгружаются 4-и компонента. Нужно чтобы при нажатии на кнопке которая находится в самом компоненте он позиционировался над ними ... в АС2 это делалось через getNextHighestDepth() Method и swapDepths() Method...

Полез в мигрейшн доки ... вычитал что теперь это можно сделать через setChildIndex, но как мне узнать самый большой индекс мува в который я подгружаю эти компоненты так и не понял ... Если кто знает как это сделать буду очень признателен за ответ.

MyXus 27.10.2006 18:21

это вот эта ссылочка? http://livedocs.macromedia.com/flex/...migration.html
тогда
Цитата:

In ActionScript 3.0, you can achieve similar functionality by using the methods of the DisplayObjectContainer class, such as the addChildAt(), setChildIndex(), swapChildren(), and swapChildrenAt() methods.

eXplozive 27.10.2006 18:26

немного переопределю вопрос...

Вот допустим я разобрался как их изменять ...

Код:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="600" height="400" layout="absolute">

<mx:Script>
        <![CDATA[

       
        public function setdepth(objects:DisplayObject):void{
    var index:int = this.getChildIndex(objects);
    if (index != 3)
    {
        this.setChildIndex(objects, 3);
    }
}
        ]]>
</mx:Script>

<mx:Panel click="setdepth(panel_1)" x="60" y="25" width="250" height="200" layout="absolute" id="panel_1" />
<mx:Panel click="setdepth(panel_2)" x="210" y="106" width="250" height="200" layout="absolute" id="panel_2" />
<mx:Panel click="setdepth(panel_3)" x="250" y="150" width="250" height="200" layout="absolute" id="panel_3" />

</mx:Application>

но в моем случае мне нужно вызвать это действие из компонента...

etc 27.10.2006 18:28

addChild добавляет элемент самым верхним.

Ммм, я так и не понял, что ты хочешь сделать…

eXplozive 27.10.2006 18:39

Попытаюсь обьяснить. Вобщем есть приложение в котором есть 4-и компонента:

Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" ayout="absolute" xmlns:ns1="components.*" >

        <ns1:New_feedback2  />
        <ns1:New_smi  />
        <ns1:New_contact  />
        <ns1:blog />
</mx:Application>

каждый из этих компонентов представляет из себя такое себе окно с данными... Я хочу чтобы при нажатии на кнопку которая находится в самом компоненте он всплывал над всеми остальными.

eXplozive 27.10.2006 19:27

Хорошо принцип как это будет происходить я уже придумал ... Только вот вопросик, а как мне вызвать из компонента функцию написанную в основном клипе... ?

etc 27.10.2006 19:49

Послать событие, кастомное.

Barb 27.10.2006 19:51

Например, путем рассылки компонентом события и написания обработчика этого события в основном клипе.

Или внутри компонента пользоваться outerDocument, который и есть ссылка на внешний документ.

eXplozive 27.10.2006 20:11

Я еще не очень в этом силен ... хоть небольшой примерчик можно ?

etc 27.10.2006 20:18

http://livedocs.macromedia.com/flex/.../00001640.html

ir73 28.10.2006 14:15

eXplozive, убери эту дурацкую аватарку. Банил бы за такое.

eXplozive 28.10.2006 14:58

Че-то сегодня не идет оно мне ... Разобрался уже полностью как из основного клипа вызывать функцию в компоненте... а как наоборот - не доходит. Вобщем так, на примитиве.

Основная сцена:
Код:


<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="components.*">

<mx:Script>
        <![CDATA[
                public function setText(text:String):void{
                        this.output.text = text;
                }               
        ]]>
</mx:Script>


        <mx:TextArea id="output" width="250" height="150"/>
        <ns1:test  x="165" y="165"/>

</mx:Application>


Сам компонент:

Код:


<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100" height="100">
        <mx:Button x="18" y="40" label="Button"/>
</mx:Canvas>

Как сделать так чтобы при нажатии на кнопку в компоненте, вызывалась функция setText ?

eXplozive 28.10.2006 16:09

Всем спасибо. Проблема решена ...

Для столкнувшихся с такой же проблемой смотрите здесь.

eXplozive 28.10.2006 18:46

Вот встречная поблемка ... Попытался запустить функцию так:

Код:


<mx:Image click="{mx.core.Application.application.setdepth(cont)}" id="icn" source="images/icn_viz.png" />

Ошибка говорит что нет доступа к проперти cont. Если пытаюсь передать как строку:


Код:


<mx:Image click="{mx.core.Application.application.setdepth('cont')}" id="icn" source="images/icn_viz.png" />

То при запуске функции:

Код:


    public function setdepth(objects:DisplayObject):void{
    var index:int = this.getChildIndex(objects);
    if (index != 1)
    {
        this.setChildIndex(objects, 1);
    }
}

Мне вылетает ошибка:

Error #1034: Type Coercion failed: cannot convert "cont" to flash.display.DisplayObject.

Nirth 28.10.2006 20:24

Тема закрыта.
пользователь eXplozive получает последнее предупреждение перед баном. Я вам уже говорил, пишите в разделе для новичков.


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

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