我正試圖用Action Script 3在Adobe Animate中重新制作這個游戲(為了一個課堂專案),在Animate中是否有類似的方法?
uj5u.com熱心網友回復:
這是有可能的。做到這一點的訣竅是創建一個很小的BitmapData物件,并在滑鼠指標下將一小部分stage繪制到該物件中,這樣你就可以獲得像素顏色值。
// BitmapData 物件和一些服務物件。
var BD: BitmapData = new BitmapData(3, 3, true)。)
var R: Rectangle = new Rectangle(0, 0, 3, 3)。)
var M:Matrix = new Matrix;
//讓我們創建一個TextField,以便我們可以輸出像素顏色值。
var T:TextField = new TextField;
var TF: TextFormat = new TextFormat("_typewriter", 12, 0x000000, true, false, false, null, null, TextFormatAlign. CENTER)。)
T.x = 10。
T.y = 10;
T.width = 100;
T.height = 18。
T.border = true。
T.background = true;
T.selectable = false;
T.mouseEnabled = false。
T.defaultTextFormat = TF;
addChild(T)。
//讓我們添加一些半透明的彩色圓圈。
//所以我們有彩色的東西可以讓滑鼠指向。。
for (var i: int = 0; i < 10; i )
{
var aColor: uint = 0;
aColor |= int(128 128 * Math. random()) << 16; / RED。
aColor |= int(128 128 * Math. random()) << 8; / GREEN。
aColor |= int(128 128 * Math. random()); // BLUE。
var anX:int = stage.stageWidth / 8 Math. random() * stage.stageWidth * 3 / 4。
var anY:int = stage.stageHeight / 8 Math. random() * stage.stageHeight * 3 / 4;
var aRadius:int = 50 100 * Math. random()。
var anAlpha:Number = 0。 5 0.5 * Math.random() 。
graphics.beginFill(aColor, anAlpha)。
graphics.drawCircle(anX, anY, aRadius)。
graphics.endFill()。
}
//現在讓我們觀察每一幀的滑鼠。
addEventListener(Event.ENTER_FRAME, onFrame) 。
function onFrame(e:Event):void。
{
///獲取像素顏色作為RRGGBB字串并列印出來。
T.text = "#" addZeroes(getColorUnderMouse)。
}
function getColorUnderMouse(/span>):uint
{
//調整Matrix,以便我們畫出正確的一塊螢屏。。
M.tx = -root.mouseX 1;
M.ty = -root.mouseY 1;
//清除BitmapData并捕獲滑鼠指標下的3x3塊。
BD.fillRect(R, 0xFFFFFFFF) 。
BD.draw(root, M, null, null, R)。
//讀取3x3中心的像素顏色值并回傳。
return BD.getPixel(1, 1) 。
}
//這個函式修復了帶前導的六進制值。
//如果顏色值太小(如0=黑色),則為零。。
function addZeroes(value:uint, count:uint = 6) :String
{
var result:String = value. toString(16).toUpperCase()。
while (result.length < count)
{
result = "0"/span> result。
}
return result。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/319525.html
標籤:
下一篇:CTF入門記錄(1

