【发布时间】:2015-04-07 04:12:05
【问题描述】:
我有一个可以在舞台上移动的玩家。
我希望对玩家周围的舞台进行小幅照明,以便敌人和环境越远越难以看到。通过在这里使用这些答案AS3: beginGradientFIll() doesn't make me a gradient!
,我已经能够在一定程度上实现这一目标此外,我希望能够动态控制 alpha,以便当玩家按下指定键时,更多的舞台会被照亮。在某种程度上,我也能够做到这一点。
这是迄今为止的 SWF。 http://www.fastswf.com/9cOxDwo
方向键移动,Z 增加亮度。
我的问题是
a) 渐变太刺眼并且
b) 按 Z 显示整个舞台,而我只是想增加照明半径。
这是我的代码的样子。
var circle:Shape = new Shape;
public function player():void
{
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function onAddedToStage(event:Event):void
{
var matrix:Matrix = new Matrix();
matrix.createGradientBox(1000, 1000)
circle.graphics.beginGradientFill(GradientType.RADIAL, [0x000000, 0x000000], [0, 1], [0, 255])
circle.graphics.drawCircle(0, 0, stage.stageWidth)
circle.graphics.endFill()
addChild(circle);
为了控制我刚刚使用的 alpha:
private function lux():void
{
circle.alpha = 0
}
private function onFrame(event:Event):void
{
if(circle.alpha < 1)
{
circle.alpha += 0.005
}
为了解决 b),我能否以某种方式动态控制 beginGradientFill() 函数中的 alpha 参数?
我也一直在查看this,但不知道如何掩盖舞台而不是剪辑。
拯救我的 AS3 神。
谢谢。
【问题讨论】:
-
我喜欢您使用代码在播放器周围动态创建照明渐变的想法 - 但使用深色覆盖(用于阴影)+ 浅色覆盖(在Flash 或 Photoshop),然后根据您的 Z 键条件缩放光覆盖以适应口味?还是您需要完全控制渐变衰减的开始和结束位置?
-
嗯,是的,我不确定该怎么做,但听起来确实更容易。我会试试看。
标签: actionscript-3 flash dynamic gradient alpha