• Bitmap 的bitmapdata和texture区别


    Texture:纹理类是对不同平台不同的图片资源的封装在HTML5中,资源是一个HTMLElement对象在OpenGL / WebGL中,资源是一个提交GPU后获取的纹理idTexture类封装了这些底层实现的细节,开发者只需要关心接口即可

    Bitmapdata:BitmapData 对象是一个包含像素数据的数组。此数据可以表示完全不透明的位图,或表示包含 Alpha 通道数据的透明位图。以上任一类型的 BitmapData 对象都作为 32 位整数的缓冲区进行存储。每个 32 位整数确定位图中单个像素的属性。
    每个 32 位整数都是四个 8 位通道值(从 0 到 255)的组合,这些值描述像素的 Alpha 透明度以及红色、绿色、蓝色 (ARGB) 值。(对于 ARGB 值,最高有效字节代表 Alpha 通道值,其后的有效字节分别代表红色、绿色和蓝色通道值。)

    用Texture给Btimap赋值时,texture有值,bitmapdata=null
    var
    bm:egret.Bitmap = new egret.Bitmap(RES.getRes("border_png")); //RES.getRes获取的是Texture this.addChild(bm);
    console.log(bm.bitmapData);
    //null console.log(bm.texture); //Texture console.log(bm.texture.bitmapData); //Bitmapdata 用bitmapdata给Bitmap赋值时,texture=null,bitmapdata有值
    var
    bm2:egret.Bitmap = new egret.Bitmap(bm.texture.bitmapData); bm2.y = 300; this.addChild(bm2); console.log(bm2.bitmapData); //Bitmapdata console.log(bm2.texture); //null

    两者在都会正常显示图片。

    查看源码

    bitmapdata和texture都保存在values[sys.BitmapKeys.bitmapData]里。

    只是在get bitmapData属性时,判断了一下类型...

    public get bitmapData(): BitmapData {
          let value = this.$Bitmap[sys.BitmapKeys.bitmapData];
           if (value instanceof Texture) {
               return null;
           }
           else {
               return value;
           }
       }
    public get texture(): Texture {
           let value = this.$Bitmap[sys.BitmapKeys.bitmapData];
           if (value instanceof Texture) {
               return value;
           }
           else {
               return null;
           }
      }

    所以在游戏里,如果要判断一个bitmap是否有图片,就得同时判断bitmapdata和texture了...

  • 相关阅读:
    ReactNative: 数据请求
    ReactNative: 使用Geolocation的API获取位置信息
    ReactNative: 使用第三方库图像选择器react-native-image-picker和react-native-image-crop-picker
    MDG_TR_DEST
    【VerySky原创】后台JOB运行-相关表
    【VerySky原创】RPR_ABAP_SOURCE_SCAN
    【VerySky原创】 ME9F
    【VerySky原创】如何查找SNRO编号范围的使用情况;
    【VerySky原创】怎样查找到CDHDR、CDPOS表中的OBJECTCLAS字段
    【由VerySky原创】由Number Range 导致凭证生成但无法保存的问题
  • 原文地址:https://www.cnblogs.com/gamedaybyday/p/6244629.html
Copyright © 2020-2023  润新知