Форум 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=145662)

КорДум 15.10.2010 17:03

Градиент с матрицей и без
 
Итак, меня интересует, почему
Код AS3:

var matrix:Matrix = new Matrix();
matrix.createGradientBox(100, 0, 0, 0, 0);
this.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x0000FF], [1, 1], [0x00, 0xFF], matrix);     
this.graphics.drawRect(0,0,100,100);

Не аналогичен вот такому коду:
Код AS3:

this.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x0000FF], [1, 1], [0x00, 0xFF]);       
this.graphics.drawRect(0,0,100,100);

? Ведь рисуется обычный градиент, не поворачивается, не смещается. Но в случае с матрицей он рисуется правильно с красного на синий, а без матрицы с фиолетово-розового на синий. Причем, если указать вместо [0x00, 0xFF] у версии без матрицы - [0x7F, 0xFF], то все очень даже чудненько и правильно рисуется. Без матрицы градиент задается от середины области до конца, что ли? Не бред ли?

i.o. 15.10.2010 17:44

Как-то времени не было вникать в особенности работы с магическими числами, но может поможет вот это:
Код AS3:

public function createBox( scaleX:Number, scaleY:Number, rotation:Number=0, tx:Number=0, ty:Number=0 ):void
{
        this.identity();
        this.rotate(rotation);
        this.scale(scaleX, scaleY);
        this.tx = tx;
        this.ty = ty;
}
 
public function createGradientBox( width:Number, height:Number, rotation:Number=0, tx:Number=0, ty:Number=0 ):void
{
        this.createBox(width / 1638.4, height / 1638.4, rotation, tx + width / 2, ty + height / 2);
}

Взято из глубин playerglobal.swc -> flash.geom.Matrix

КорДум 15.10.2010 19:13

Совсем непонятна эта строчка:
Код AS3:

width / 1638.4, height / 1638.4

и падают подозрения на эту, будто и правда с середины считает:
Код AS3:

tx + width / 2, ty + height / 2


i.o. 15.10.2010 20:31

я не знаю, сам ничего тут не допридумывал. Можете любым декомпилятором вскрыть playerglobal.swc и посмотреть как он устроен. Думаю данное не считается аморальным. На флэшриппере даже статьи этому посвящались.

КорДум 15.10.2010 21:22

А я и не кричу, что вы мне голову морочите. Однако ж, нелогично сделали адобовцы.


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

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