Как применить прямоугольник клипа к группе или что-то подобное?

У меня есть Phaser.group, содержащая 6 изображений, группа имеет высоту 600 пикселей, но я хочу, чтобы только первые 3 изображения выглядели с высотой примерно 300 пикселей для эффекта типа слота на изображениях.

Я пробовал разные варианты с .crop с маской, но нашел лучшее решение.

Как я могу сделать clipRect?

Благодарность


person tomcask    schedule 08.09.2014    source источник


Ответы (1)


В конце концов я нашел решение, у меня проблемы с позициями прямоугольника, вот вам:

var maskGraphics = this.game.add.graphics(0,0);
maskGraphics.beginFill(200, 100, 0 , 0);
maskGraphics.drawRect(x , y, width,height); 
maskGraphics.endFill();

this.mask = maskGraphics

Вы должны создать изображение и присвоить ему альфа-0, назначив размер, который вы хотите, чтобы он был видимым.

Добавьте это изображение в качестве маски к нужному объекту, в моем случае это группа, но это может быть и другое изображение или другие объекты.

Корректная работа с Phaser v2.0.6

person tomcask    schedule 08.09.2014
comment
Да, свойство маски - это способ сделать это. Помните, что координаты маски находятся в пространстве экрана, а не локально для спрайта, который они маскируют. Также вам не нужно указывать альфа-значение для beginFill. Цвет тоже не имеет значения, я предпочитаю использовать только белый, но подойдет любой цвет. Вам также не нужен вызов endFill, хотя я могу понять, почему кажется, что включить его чище :) Но маскирующий код его игнорирует. - person PhotonStorm; 08.09.2014
comment
Большое спасибо @PhotonStorm, я отрефакторил это. Использование масок, особенно позиционирование, сбивает с толку, но поздравляю с этим замечательным фреймворком. Окончательный код: var maskGraphics = this.game.add.graphics(0,0); maskGraphics.beginFill(0xffffff); maskGraphics.drawRect(x,y,ширина,высота); this.mask = маскаГрафика; - person tomcask; 09.09.2014
comment
Выглядит хорошо для меня :) Помните, что вы можете изменить mask.x (или y или любое другое свойство), и это будет обновлять маску в реальном времени без необходимости повторного применения ее к спрайту. - person PhotonStorm; 09.09.2014