Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как правильно применять эффекты? (http://www.flasher.ru/forum/showthread.php?t=96114)

Powerhead 23.05.2007 21:47

Как правильно применять эффекты?
 
Друзья, подскажите, каким образом применить эффект Resize к какому-либо компоненту с графикой?
Я создаю канвас, рисую на нем circle и пытаюсь применить эффект - так не срабатывает. Только меняются границы канваса, но графика остается статичной.
Вот код

Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="draw();">

<mx:Script>
        <![CDATA[
                import mx.containers.Canvas;
                import mx.effects.Resize;
               
                public function draw():void {
                       
                        var myDiv:Canvas = new Canvas();
                       
                        myDiv.width = 100;
                        myDiv.height = 100;
                        myDiv.setStyle('borderStyle', 'solid');
                        myDiv.setStyle('borderThickness', 1);
                        myDiv.setStyle('borderColor', 0x000000);
                        myDiv.graphics.lineStyle(2, 0x000000, 0.8);
                        myDiv.graphics.beginFill(0xFFFFFF, 0.6);
                        myDiv.graphics.drawCircle(100, 100, 100);
                        myDiv.graphics.endFill();
                        application.addChild(myDiv);
                       
                        myDiv.scaleX = 0.5;
                       
                        var res:Resize = new Resize();
                        res.target            = myDiv;
                        res.widthTo    = 250;
                        res.heightTo  = 250;
                        res.duration  = 700;
                        res.play();
                }
        ]]>
</mx:Script>
       
</mx:Application>


miramax 23.05.2007 23:13

help -> Creating and Extending Flex 2 Components -> Creating ActionScript Components -> Creating Advanced Visual Components in ActionScript -> Implementing the component -> Implementing the measure() method

Powerhead 24.05.2007 15:12

Спасибо, большое, но я не могу разобраться, как мне этот метод может помочь?
Добавил:

Код:

myDiv.invalidateSize();
myDiv.measuredHeight = 100;
myDiv.measuredWidth = 100;

но ничего не меняется - эффект resize никаким образом не влияет на графику, нарисованную на канвасе.

miramax 24.05.2007 15:43

Надо ещё почитать про updateDisplayList() и про createChildren() для завершённости.

etc 24.05.2007 16:09

Расшифрую miramax-а: нужно создать свой компонент на основе того же UIComponent и реализовать перечисленные методы.

Powerhead 04.06.2007 16:59

Спасибо, прочел.
В общем, получается так - если я применяю к канвасу эффект Resize, то, в течение действия эффекта, многократно дергается метод updateDisplayList(). Я могу в этом методе перерисовывать всю графику, в этом случае, эффект применяется и к нарисованной на канвасе графике. Но вычисление новых координат и размеров графических элементов получается слишком громоздким. А нет ли способа взять канвас, нарисовать на нем пару кружочков и линий, затем превратить его в некий спрайт, к которому можно применять эффекты ресайза и не париться на счет новых координат графических объектов?
Мне нужно достичь вот такого эффекта: http://www.powerhead.kiev.ua/Work/chart/
Подскажите наиболее простой способ этого добиться.

Powerhead 04.06.2007 18:19

Грубо говоря, мне нужно сделать следующее - нарисовать многоугольник с заливкой а затем применить к нему эффект resize. Как проще всего это сделать?


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

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