Flash 闪存上的外部图像未加载到位图
我以前有过一个答案,它非常有用,因此我修改了代码使其能够工作,但是,我仍然处于第一步Flash 闪存上的外部图像未加载到位图,flash,Flash,我以前有过一个答案,它非常有用,因此我修改了代码使其能够工作,但是,我仍然处于第一步 //load libs import flash.net.*; import flash.geom.Matrix; import flash.display.*; import flash.events.*; import com.adobe.images.JPGEncoder; function myLoader() { var loader:Loader = new Loader(); l
//load libs
import flash.net.*;
import flash.geom.Matrix;
import flash.display.*;
import flash.events.*;
import com.adobe.images.JPGEncoder;
function myLoader() {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, sketch);
var request:URLRequest = new URLRequest("http://www.sergiorodriguez.org/images/2008_5_FXD_VividBlack.jpg");
loader.load(request);
}
//action for mouse
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveCursor);
Mouse.hide();
function moveCursor(event:MouseEvent):void{
pencil.x = event.stageX;
pencil.y = event.stageY;
}
var canvas_mc;
canvas_mc = new MovieClip()
addChildAt(canvas_mc,0);
canvas_mc.swapDepths
//draw area to sketch
function sketch(e:Event):void{
//load bitmap and draw it to memory
var myBitmapData;
myBitmapData = new BitmapData(500, 500);
myBitmapData.draw(e);
//define matrix
var matrix;
matrix = new flash.geom.Matrix();
//start canvas
canvas_mc.graphics.beginBitmapFill(myBitmapData,matrix, true, true);
canvas_mc.graphics.drawRect(0, 0, 500, 500);
canvas_mc.graphics.endFill();
//listening events
canvas_mc.addEventListener(MouseEvent.MOUSE_DOWN, startDrawing);
canvas_mc.addEventListener(MouseEvent.MOUSE_UP, stopDrawing);
canvas_mc.addEventListener(MouseEvent.MOUSE_MOVE, makeLine);
}
//mouse draws on press
function startDrawing(event:MouseEvent):void{
canvas_mc.graphics.lineStyle(1, 0, 1);
canvas_mc.graphics.moveTo(mouseX, mouseY);
canvas_mc.addEventListener(MouseEvent.MOUSE_MOVE, makeLine);
}
//mouse stops drawing on realese
function stopDrawing(event:MouseEvent):void{
canvas_mc.removeEventListener(MouseEvent.MOUSE_MOVE, makeLine);
}
//creates lines
function makeLine(event:MouseEvent):void{
canvas_mc.graphics.lineTo(mouseX, mouseY);
}
//call function
myLoader()
//start to save onto server
var serverPath:String = "";
function createJPG(m:MovieClip, q:Number, fileName:String){
var jpgSource:BitmapData = new BitmapData (m.width, m.height);
jpgSource.draw(m);
var jpgEncoder:JPGEncoder = new JPGEncoder(q);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
var jpgURLRequest:URLRequest = new URLRequest ( serverPath+"jpg_encoder_download.php?name=" + fileName + ".jpg");
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
var jpgURLLoader:URLLoader = new URLLoader();
//jpgURLLoader.load(jpgURLRequest);
navigateToURL(jpgURLRequest, "_blank");
}
save_btn.addEventListener(MouseEvent.CLICK, saveBtnPress);
save_btn.addEventListener(MouseEvent.ROLL_OVER, saveBtnOver);
save_btn.addEventListener(MouseEvent.ROLL_OUT, saveBtnOut);
function saveBtnPress(e:Event):void{
createJPG(canvas_mc, 90, "sketch");
}
function saveBtnOver(e:Event):void{
Mouse.show();
pencil.visible = false;
}
function saveBtnOut(e:Event):void{
Mouse.hide();
pencil.visible = true;
}
我不确定问题是什么,但我假设您正在尝试在myLoader()函数加载的图像上绘制,并且您没有看到图像。在这种情况下,问题是您没有将加载程序实例作为子对象添加到主精灵中。以下是修复方法:
function myLoader() {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, sketch);
var request:URLRequest = new URLRequest("http://www.sergiorodriguez.org/images/2008_5_FXD_VividBlack.jpg");
loader.load(request);
addChild(loader);
}
说明:加载程序最终将包含加载的图像,但如果希望显示,则需要显示加载程序本身。无法将事件绘制到位图。您需要绘制加载的图像 更改您的线路:
myBitmapData.draw(e);
进入
我怀疑你的代码还有很多其他的问题,我真的看不到你在任何地方把位图数据添加到任何位图中,所以你永远也看不到画了什么
另外,在你的问题中要尽量具体一点,如果我们不必通读整个代码,回答起来会容易得多 谢谢你的回答,以下是我想要完成的:我正在创建一个绘图板,我想在上面加载一个背景图像。我应该能够在图像的顶部画画。
myBitmapData.draw(loader);