dfNewBitmapSet: no <Background> tag in BitmapSet

Hi,

I’m new to BrightScript and Roku development. I’m going through the Roku SDK and I’m on the 4.12.2 v30/bslDefender.brs section. There’s an example there and when I added it to the Roku Sample app and run, I get the following message in the debug console:

dfNewBitmapSet: no tag in BitmapSet

I’m developing on Roku model 4200x with software version 5.3 build 4016. I’ve included the bslDefender library. I’ve made sure the .xml file is deployed and that the image exists. I even simplified the xml to

<DefenderBitmapSet>
		<ExtraInfo cellsize="40"/>
		
		<Bitmap name="Background" filespec="pkg:/images/background_hd.png" />
		
</DefenderBitmapSet>

bitmapset = dfNewBitmapSet(ReadAsciiFile("pkg:/images/spriteMap.xml"))

I’ve looked in other areas of the document for troubleshooting, but to no avail. I can’t continue because the bitmapset is still null. What am I doing wrong, what am I missing, or what gives???

Thanks

<Background name="Background" filespec="pkg:/images/background_hd.png" />

should be Background and not bitmap as the xml start tag.

I see that warning all the time since I am not using a background in my code and don’t have it in my xml file.

Troy

Thanks for the reply. I’m just a little confused because the “Snake” sample app doesn’t have defined in their .xml and it runs fine.

http://sourceforge.net/projects/rokusdkexamples/files/snake.zip/download

Is the Roku SDK document outdated then? Can someone from Roku confirm?

Edit: I just ran it with but now I get an error “no tag”. What is going on? I’ve included the “v30/bslDefender.brs” library.

Thanks

I get the warning everytime also of dfNewBitmapSet: no tag in BitmapSet in the debug log but it is just a warning I ignore.

here is my bitmapset.xml

<DefenderBitmapSet>

   <Bitmap name="gameTiles" filespec="pkg:/data/tilesv.png">
<Region name="0" x="00" y="00" w="1" h="8"/>
...
<Region name="255" x="00" y="2040" w="1" h="8"/>
   </Bitmap>

</DefenderBitmapSet>

I load it up with

    bitmapset = dfNewBitmapSet(ReadAsciiFile("pkg:/data/bitmapset.xml"))

	sprites = CreateObject("roArray", 256, true)
	for i%=0 to 255
		reg="gameTiles."+i%.tostr()
		sprites[i%]=bitmapset.regions[reg]
	end for

in my draw routine I call

m.screen.DrawObject(x%, (yy%-8), sprites[value%])

I tried to run the Collisions example and the Snowflake example (from the developer blog) but I can’t get them to work. The example XML differs from the documentation:

http://sdkdocs.roku.com/display/sdkdoc/ … efenderbrs

(The example has the documentation states )

The example code and docs also say to use <Bitmap and not <Background

The error I am getting is

dfNewBitmapSet: Error parsing XML

ANd this is with the example code, unaltered and also updated with the DefenderBitmapSet opening tags. Both versions fail. Why?

I can see the Library “v30/bslDefender.brs”, but do I have to do anything special in Eclipse to use this file? I can’t see it in the source download.

My opinion is you will get further faster if you don’t worry yourself with the dfBitmapSet - its an extra layer of code that is unnecessary, but bears some resemblance to xml seen on other platforms used in a similar fashion.

You can easily create bitmaps, regions and sprites without it and you don’t need to parse any XML to do it:


    screen=createobject("roScreen",true,1280,720)
    screen.setalphaEnable(true)
    layer=1
    bitmap=createobject("robitmap","pkg:/images/mm_icon_focus_hd.png")
    region=createobject("roRegion",bitmap,0,0,bitmap.getwidth(),bitmap.getheight())
    Compositor=createobject("rocompositor")
    compositor.setDrawTo(screen,&h000000ff)

Used in a working example:

sub main()
    screen=createobject("roScreen",true,1280,720)
    screen.setalphaEnable(true)
    layer=1
    bitmap=createobject("robitmap","pkg:/images/mm_icon_focus_hd.png")
    region=createobject("roRegion",bitmap,0,0,bitmap.getwidth(),bitmap.getheight())
    Compositor=createobject("rocompositor")
    compositor.setDrawTo(screen,&h000000ff)
    
    mySprite=compositor.newSprite(100,100,region,layer)
    while true
        mysprite.MoveOffset(1,2)
        if mysprite.getx() > 1280 then 
            mysprite.moveto(0,mysprite.gety())
        end if
        if mysprite.gety() > 720 then 
            mysprite.moveto(mysprite.getx(),0)
        end if
        compositor.drawall()
        screen.swapbuffers()
    end while
end sub

For memory management purposes, you should know how to un-create sprites, bitmaps and regions as well:

MySprite.remove()
region=invalid
bitmap=invalid
screen.swapbuffers() 

  • Joel

  • Joel