Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 3 > применение градиент-маски к обьекту Bitmap


Автор: egoistu 5.7.2011, 13:49
всем привет,
сразу хочу поблагодарить всех кто отпишется в этой теме...

ребята... есть проблемка с применением градиент маски к изображению...
разясняю...

делаю Image Scroller...
что-то типа галереи фотографий...
и так...
есть картинка... под ней её перевёрнутая копия... отражение...
к отражению надо применить градиент маску...
ну чтоб постепенно исчезала...

хотя это не важно скорей всего... но... всё-же...
для каздой картинки галереи... свой мовиклип... в нём 3 елемента...
сама картинка... её отражение... и градиент типа Shape...

значит... картинку ставлю... ставлю отражение... на отражение накладываю градиент...
всё в порядке... но...
как только к свойству .mask присваиваю сам градиент...
по какой-то не понятной мне причине они меняют свой размер...
(отражение и маска)

самое странное... точно такой способ как и тут применял в другой части...
в смысле отражение с градиентом...
там всё нормально работает...

вот код...
Код

    // Save image
    this.image = new Bitmap(event.target.content.bitmapData);
    this.image.smoothing = true;
    
    // Resize image
    this.image.height = scroller.container.main.stageHeight / 2;
    this.image.scaleX = this.image.scaleY;
    this.image.x = -this.image.width / 2;
    this.image.y = -this.image.height / 2;
    
    // Set item position
    this.x = this.getNextX() + this.image.width / 2 + 5;
    //this.y = scroller.container.main.stageHeight / 4 + this.image.height / 2;
    this.y = 100;
    
    // Add image
    this.addChildAt(this.image, 0);
    
    // Create reflection        
    var reflection:Bitmap = new Bitmap(event.target.content.bitmapData);
    reflection.smoothing = true;
    reflection.rotationX = 180;
    reflection.x = this.image.x;
    reflection.y = this.image.y + this.image.height * 2 + 1;
    reflection.alpha = 0.5;
    reflection.width = this.image.width;
    reflection.height = this.image.height;

    // Add reflection
    this.addChildAt(reflection, 1);

    // Create gradient
    var matrix:Matrix = new Matrix();
    matrix.createGradientBox(reflection.width, reflection.height, Math.PI / 2);
    
    var gradient:Shape = new Shape();
    gradient.rotationX = 180;
    gradient.x = reflection.x;
    gradient.y = reflection.y;
    gradient.graphics.beginGradientFill(GradientType.LINEAR, [0xFFFFFF, 0xFFFFFF], [0, 1], [127, 255], matrix);
    gradient.graphics.drawRect(0, 0, reflection.width, reflection.height);
    gradient.graphics.endFill();
    
    // Add gradient
    this.addChildAt(gradient, 2);
        
    // Apply gradient to reflected image
    reflection.mask = gradient;


и еще мелочи... скорей всего не важные...
при наведение мышки на картинку...
а точнее на мовик с картинкой, отражением и маской...
запускается Tween... scaleX... scaleY...
10%-ый zoom картинки...

очень надеюсь на вас...
ещё раз спасибо... ;)

скрин-шоты...
без маски...
http://s2.ipicture.ru/Gallery/Viewfull/4922290.html

и с маской...
http://s2.ipicture.ru/Gallery/Viewfull/4922256.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)