步驟二:具體實現
WPF/Silverlight 無直接改變圖片色相方法,改用控件蒙版間接實現。在 QXSpirit XAML 添加矩形蒙版:
<Rectangle Name="BodyMask" Opacity="0.3" Visibility="Collapsed" Panel.ZIndex="1">
<Rectangle.OpacityMask>
<ImageBrush x:Name="BodyMaskSource" />
</Rectangle.OpacityMask>
</Rectangle>
蒙版寬高與精靈圖片聯動,需時設定 BodyMaskSource.ImageSource = Body.Source、賦予 Fill 顏色並顯示,即可模擬色相改變。恢復時隱藏 Collapsed 不佔資源。
double[] _ExtraTime = new double[6];
public double[] ExtraTime { get { return _ExtraTime; } set { _ExtraTime = value; } }
與 ExtraAttributes 枚舉一一對應,輔助執行緒每秒 -1 同步更新,支援中毒每秒傷血等邏輯。
無法動彈:動作鎖定、無法移動。
if (enemy.VLife > injure)
{
enemy.BodyMaskColor = new SolidColorBrush(Colors.Snow);
enemy.BodyMaskSource.ImageSource = enemy.Body.Source;
enemy.TimerState = TimerStates.Stop;
Super.PauseSpiritStoryboard(enemy);
}
else { enemy.TimerState = TimerStates.Start; }
移動方法開頭加判斷:if (spirit.ExtraTime[0] > 0) return;
