Class | Rubygame::MediaBag |
In: |
lib/rubygame/mediabag.rb
|
Parent: | Object |
NOTE: MediaBag is DEPRECATED and will be removed in Rubygame 3.0! Use the NamedResource functionality of Music, Sound, and Surface instead.
NOTE: you must require ‘rubygame/mediabag’ manually to gain access to Rubygame::MediaBag. It is not imported with Rubygame by default!
A Hash-like class which will load and retain media files (images and sounds), so that the file can be loaded once, but used many times.
The first time a file is requested with the #[] method,that file will be loaded into memory. All subsequent requests for the same file will return a reference to the already-loaded version. Ideally, objects should not have to know whether or not the image has been loaded or not.
Load the file, but only if it has not been previously loaded.
# File lib/rubygame/mediabag.rb, line 63 def load(filename) @media[filename] or store( filename, load_file(filename) ) end
# File lib/rubygame/mediabag.rb, line 83 def load_file(filename) case File::extname(filename).downcase[1..-1] when *(@@image_ext) return load_image(filename) when *(@@sound_ext) return load_sound(filename) else raise(ArgumentError,"Unrecognized file extension `%s': %s"% [File::extname(filename), filename]) end end
# File lib/rubygame/mediabag.rb, line 95 def load_image(filename) return Rubygame::Surface.load_image(filename) end
# File lib/rubygame/mediabag.rb, line 99 def load_sound(filename) return Rubygame::Mixer::Sample.load_audio(filename) end