AS3 Blitting - 复制像素获取一些源图像

2024-01-11

我试图在屏幕上绘制一些内容,然后将其复制到舞台上的位图上。

我以前已经这样做过,用程序绘制的形状如圆形,但当我使用库项目时,大多数源像素都会被切断。

这是我的代码 - 在另一个函数中,位图对象被添加到舞台上,我可以看到 copyPixels 工作,但正如我所说,仅复制一些像素。我尝试过使用矩形,但到目前为止还没有运气。

var s:StarAsset = new StarAsset();

        s.x = e.stageX;
        s.y = e.stageY;
        s.scaleX = e.pressure * 10;
        s.scaleY = e.pressure * 10;
        s.rotation = Math.random() * 360;



        var bms:BitmapData = new BitmapData(s.width + 6, s.height + 6, true, 0x00000000);
        bms.draw(s);

        var srect:Rectangle = new Rectangle();
        srect.width = s.width + 6;
        srect.height = s.height + 6;

        var destpoint:Point = new Point(s.x, s.y);
        bmcontainer.copyPixels(bms, srect, destpoint, null, null, true);

使用明星资产:

假设您正在舞台上位图传输到画布位图:

var canvas:BitmapData = new BitmapData(600, 600, true, 0x0);
var bitmap:Bitmap = new Bitmap(canvas, PixelSnapping.AUTO, true);
addChild(bitmap);

此实现将实例化您的StarAsset,将其绘制到BitmapData,然后随机变换绘制到画布上的每个副本的比例、位置和旋转:

makeStars();

function makeStars():void
{
    // get the star asset
    var s:StarAsset = new StarAsset();

    // copy star asset to bitmap data
    var bd:BitmapData = new BitmapData(s.width, s.height, true, 0x0);
    bd.draw(s);

    // draw 100 variants on BitmapData
    for(var i:uint = 0; i < 100; i++)
    {
        var positionX:Number = Math.random() * 600;
        var positionY:Number = Math.random() * 600;
        var scale:Number = Math.random();
        var angle:Number = Math.random() * 360;

        var matrix:Matrix = new Matrix();
        matrix.scale(scale, scale);
        matrix.rotate(angle * Math.PI / 180);
        matrix.translate(positionX, positionY);

        canvas.draw(bd, matrix, null, null, null, true);
    }
}

其产生:

或者这里绘制了 1,000 颗星星:

或者最后绘制 10,000 颗星星:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AS3 Blitting - 复制像素获取一些源图像 的相关文章

随机推荐

  • 在Excel中使用True、False、1、0作为VLOOKUP的最后一个值有什么区别?

    在Excel中 vlookup函数末尾有一个可选参数 称为 范围查找 或 not exact match 您可以为此值输入 1 0 true 或 false 它们之间有什么区别以及它是如何工作的 公式中的最后一个值有时称为Range Inp
  • 新 Xcode 项目中的 MainWindow.xib 在哪里?

    我使用 TabBar 模板在 Xcode 4 中启动了一个新项目 我注意到没有MainWindow xib项目中的文件 Apple 是否删除了该文件 如果没有这个文件 我如何访问主窗口 MainWindow xib 一开始有点多余 请记住它
  • 匿名类型的非只读替代方案

    在 C 中 匿名类型可以如下所示 method doStuff var myVar new a false b true if myVar a Do stuff 但是 以下内容将无法编译 method doStuff var myVar n
  • python unittest.TestCase.assertRaises 不起作用

    我正在尝试在 Python 中对 add 函数运行测试 但出现错误 7 E ERROR test upper main TestStringMethods Traceback most recent call last File C Use
  • 为什么我的 Silverlight 应用程序无法在 Internet Explorer 中加载?

    由于某些奇怪的原因 我的 Silverlight 4 应用程序未在 Internet Explorer 中加载 我没有看到任何错误消息 只是一个空白屏幕 它在 Chrome 中运行良好 有任何想法吗 当 SL 在浏览器中加载失败时 通常与
  • 如果未安装 access,我的程序仍然可以运行

    我正在开发一个程序 该程序从 Excel 文件检索信息并转换该信息以将其存储在 Access 数据库中并稍后使用 该程序将运行的计算机确实安装了Excel 但我不确定它是否有Access 我只是想知道我的程序在这种情况下是否可以工作 或者
  • 如何获取mongoDB中内部文档属性的值?

    我是 mongoDB 新手 我在网络应用程序中使用 mongoDB 我想知道如何获取文档的内部文档属性的值 可以说我的 JSON 是这样的 id oid 4ceb753a70fdf877ef5113ca Attrr1 value1 Attr
  • 使用 Core 图像过滤时出现内存泄漏

    所以我一直在使用核心图像在图像上应用滤镜 一切都很好 除了当我尝试一遍又一遍地应用相同的滤镜时 应用程序只是退出 我猜这是内存泄漏 这是代码 UIImage applyFilter UIImage picture UIImageOrient
  • 编写可扩展网站的技术

    我是网站可扩展性领域的新手 您能否向我建议一些使网站可扩展到大量用户的技术 在重负载下测试您的网站 监控所有统计数据 寻找瓶颈 修复瓶颈 返回1 祝你好运
  • 自连接查询

    是否可以仅使用 join 进行父子查询而不循环遍历临时表 数据库样本 menuid name parent url A0000 Master A0000 A0001 Rekening A0000 master rekening aspx A
  • 如何解决“多重性在角色中无效”错误?

    我有以下模型 public class Retailer Entity public string Name get set public string Address get set public virtual ICollection
  • 为什么在Windows下搭建Android 2.3的开发环境如此噩梦般? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 vanilla JS 和循环绘制表格

    我正在做一个练习 来自 Beginning Javascript 以更好地理解 DOM 操作 尝试仅使用 JS 以 DRY 方法重新创建下表 教科书解决方案是here https jsfiddle net robert93 99mph1jq
  • ASP.NET MVC 支持 HTML 输出(而不是 XHTML)

    在我看来 ASP NET MVC Html Helpers 只输出类似 XHTML 的标签 封闭的空元素 这不是有效的 HTML ASP NET MVC 是否支持 HTML 输出 正如 pcampbell 暗示的那样 您可能需要编写自己的
  • 如何衡量计算着色器的时间性能?

    我需要测量计算着色器的时间 但这当然不是小事 从OpenGL 维基 性能 https www opengl org wiki Performance我知道 在着色器调用之前和之后使用 glFinish 很有用 但他们也说使用它并不是那么好
  • 模拟器和合成器之间初始化状态机的差异

    我的问题是关于合成状态机中使用的第一个状态 我正在使用莱迪思 iCE40 FPGA 用于仿真的 EDA Playground 和用于综合的莱迪思 Diamond Programmer 在下面的示例中 我生成一系列信号 该示例仅显示引用状态机
  • Chart.js:从canvas获取图表数据

    我有几个 Chart js 图表 以后可能需要更新 当我需要更新图表时 是否可以从canvas元素中提取myChart对象 或者我是否必须在全局范围内保存每个 myChart 对象 for var i 1 i lt 5 i createCh
  • PyMC3 将随机协方差矩阵传递给 pm.MvNormal()

    我尝试使用 PyMC3 将简单的 2D 高斯模型拟合到观察到的数据 import numpy as np import pymc3 as pm n 10000 np random seed 0 X np random multivariat
  • 为什么Java认为从10到99所有数字的乘积都是0?

    以下代码块的输出为 0 public class HelloWorld public static void main String args int product 1 for int i 10 i lt 99 i product i S
  • AS3 Blitting - 复制像素获取一些源图像

    我试图在屏幕上绘制一些内容 然后将其复制到舞台上的位图上 我以前已经这样做过 用程序绘制的形状如圆形 但当我使用库项目时 大多数源像素都会被切断 这是我的代码 在另一个函数中 位图对象被添加到舞台上 我可以看到 copyPixels 工作