📄 ming.rb
字号:
require 'mingc'require 'final' # for Ruby 1.4include Mingcinclude ObjectSpaceclass SWFBase attr_accessor :this def initialize(this) @this = this endendclass SWFRect <SWFBase def initialize(minX, maxX, minY, maxY) super newSWFRect(minX, maxX, minY, maxY) define_finalizer(self) {destroySWFRect(@this)} end def getWidth return SWFRect_getWidth(@this) end def getHeight return SWFRect_getHeight(@this) endendclass SWFShape <SWFBase def initialize(o = nil) @fills = [] if o.nil? super newSWFShape() else super o end define_finalizer(self) {destroySWFShape(@this)} end def setLine(width, r, g, b, a=0xff) return SWFShape_setLine(@this, width, r, g, b, a) end # I know there's probably a better way to do this.. def addFill(arg1, arg2=0, arg3=nil, arg4=0xff) if arg3 != nil return SWFFill.new(SWFShape_addSolidFill(@this, arg1, arg2, arg3, arg4)) end if arg1.is_a?(SWFGradient) # XXX - have to keep reference to gradient so it's not disposed @fills.push(arg1) return SWFFill.new(SWFShape_addGradientFill(@this, arg1.this, arg2)) end if arg1.is_a?(SWFBitmap) # XXX - have to keep reference to bitmap so it's not disposed @fills.push(arg1) return SWFFill.new(SWFShape_addBitmapFill(@this, arg1.this, arg2)) else raise "bad argument to SWFShape::addFill" end end def setLeftFill(fill) SWFShape_setLeftFill(@this, fill.this) end def setRightFill(fill) SWFShape_setRightFill(@this, fill.this) end def movePenTo(x, y) SWFShape_movePenTo(@this, x, y) end def drawLineTo(x, y) SWFShape_drawLineTo(@this, x, y) end def drawLine(dx, dy) SWFShape_drawLine(@this, dx, dy) end def drawRect(rect) SWFShape_drawRect(@this, rect.this) end def drawCurveTo(bx, by, cx, cy, dx=nil, dy=nul) if dx != nil SWFShape_drawCubicTo(@this, bx, by, cx, cy, dx, dy) else SWFShape_drawCurveTo(@this, bx, by, cx, cy) end end def drawCurve(bx, by, cx, cy, dx=nil, dy=nil) if dx != nil SWFShape_drawCubic(@this, bx, by, cx, cy, dx, dy) else SWFShape_drawCurve(@this, bx, by, cx, cy) end end def drawCubicTo(bx, by, cx, cy, dx, dy) SWFShape_drawCubicTo(@this, bx, by, cx, cy, dx, dy) end def drawCurve(bx, by, cx, cy, dx, dy) SWFShape_drawCubic(@this, bx, by, cx, cy, dx, dy) end def drawGlyph(font, char, size=0) SWFShape_drawSizedGlyph(@this, font.this, char[0], size) #ord(char[0])) end def addSolidFill(r, g, b, a=0xff) return SWFFill.new(SWFShape_addSolidFill(@this, r, g, b, a)) end def addGradientFill(gradient, flags) return SWFShape_addGradientFill(@this, gradient.this, flags) end def addBitmapFill(bitmap, flags) return SWFShape_addBitmapFill(@this, bitmap.this, flags) endendclass SWFFill <SWFBase def initialize(o) define_finalizer(self) {destroySWFFill(@this)} super o end def rotateTo(degrees) SWFFill_rotateTo(@this, degrees) end def moveTo(x, y) SWFFill_moveTo(@this, x, y) end def scaleTo(xScale, yScale=nil) if yScale.nil? SWFFill_scaleXYTo(@this, xScale, xScale) else SWFFill_scaleXYTo(@this, xScale, yScale) end end def scaleXTo(xScale) SWFFill_scaleXTo(@this, xScale) end def scaleYTo(yScale) SWFFill_scaleYTo(@this, yScale) end def skewXTo(x) SWFFill_skewXTo(@this, x); end def skewYTo(y) SWFFill_skewYTo(@this, y) end def setMatrix(a, b, c, d, x, y) SWFFill_setMatrix(@this, a, b, c, d, x, y) endendclass SWFDisplayItem <SWFBase def rotate(degrees) SWFDisplayItem_rotate(@this, degrees) end def rotateTo(degrees) SWFDisplayItem_rotateTo(@this, degrees) end def move(x, y) SWFDisplayItem_move(@this, x, y) end def moveTo(x, y) SWFDisplayItem_moveTo(@this, x, y) end def scale(xScale, yScale) SWFDisplayItem_scale(@this, xScale, yScale) end def scaleTo(xScale, yScale) SWFDisplayItem_scaleTo(@this, xScale, yScale) end def skewX(x) SWFDisplayItem_skewX(@this, x) end def skewXTo(x) SWFDisplayItem_skewXTo(@this, x); end def skewY(y) SWFDisplayItem_skewY(@this, y) end def skewYTo(y) SWFDisplayItem_skewYTo(@this, y) end def setMatrix(a, b, c, d, x, y) SWFDisplayItem_setMatrix(@this, a, b, c, d, x, y) end def setName(name) SWFDisplayItem_setName(@this, name) end def setRatio(ratio) SWFDisplayItem_setRatio(@this, ratio) end def getDepth return SWFDisplayItem_getDepth(@this) end def setDepth(depth) SWFDisplayItem_setDepth(@this, depth) end def addColor(r, g, b, a=0) SWFDisplayItem_addColor(@this, r, g, b, a) end def multColor(r, g, b, a=1.0) SWFDisplayItem_multColor(@this, r, g, b, a) end def remove SWFDisplayItem_remove(@this) endendclass SWFMovie <SWFBase def initialize super newSWFMovie() @blocks = [] define_finalizer(self) {destroySWFMovie(@this)} end def setRate(rate) SWFMovie_setRate(@this, rate) end def setDimension(x, y) SWFMovie_setDimension(@this, x, y) end def setBackground(r, g, b) SWFMovie_setBackground(@this, r, g, b) end def setFrames(totalFrames) SWFMovie_setNumberOfFrames(@this, totalFrames) # or: end def setNumberOfFrames(totalFrames) SWFMovie_setNumberOfFrames(@this, totalFrames) end def nextFrame SWFMovie_nextFrame(@this) end def add(block) @blocks.push(block) return SWFDisplayItem.new(SWFMovie_add(@this, block.this)) end def remove(item) SWFMovie_remove(@this, item.this) end def streamMp3(sound) @blocks.push(sound) SWFMovie_setSoundStream(@this, sound.this); end # deprecated: def setSoundStream(sound) @blocks.push(sound) SWFMovie_setSoundStream(@this, sound.this); end def output return SWFMovie_simpleOutput(@this) end # deprecated: (?) def simpleOutput return SWFMovie_simpleOutput(@this) end def save(filename) SWFMovie_save(@this, filename) end def labelFrame(label) SWFMovie_labelFrame(@this, label) endendclass SWFSprite <SWFBase def initialize super newSWFMovieClip() @blocks = [] define_finalizer(self) {destroySWFMovieClip(@this)} end def setNumberOfFrames(frames) SWFMovieClip_setNumberOfFrames(@this, frames) end def add(block) @blocks.push(block) return SWFDisplayItem.new(SWFMovieClip_add(@this, block.this)) end def remove(item) SWFMovieClip_remove(@this, item.this) end def nextFrame SWFMovieClip_nextFrame(@this) end def labelFrame(label) SWFMovieClip_labelFrame(@this, label) endend# deprecatedclass SWFMovieClip <SWFSpriteclass SWFGradient <SWFBase def initialize super newSWFGradient() end def addEntry(ratio, r, g, b, a) return SWFGradient_addEntry(@this, ratio, r, g, b, a) endendclass SWFMorph <SWFBase def initialize super newSWFMorphShape() define_finalizer(self) {destroySWFMorph(@this)} end def getShape1 # have to keep a reference so it doesn't scope out @shape1 = SWFShape.new(SWFMorph_getShape1(@this)) return @shape1 end def getShape2 @shape2 = SWFShape.new(SWFMorph_getShape2(@this)) return @shape2 endend# deprecatedclass SWFMorphShape <SWFMorphclass SWFFont <SWFBase def initialize(name) if name =~ /\.fdb$/ @browserfont = 0 super loadSWFFontFromFile(open(name)) else @browserfont = 1 super newSWFBrowserFont(name) end define_finalizer(self) { if @browserfont == 1 destroySWFBrowserFont(@this) else destroySWFFont(@this) end } end def getAscent return SWFFont_getAscent(@this) end def getDescent return SWFFont_getDescent(@this) end def getLeading return SWFFont_getLeading(@this) end def getWidth(string) return SWFFont_getWidth(@this, string) endendclass SWFBitmap <SWFBase def initialize(fname, alpha=nil) if fname =~ /\.dbl$/i @file = open(fname) super newSWFDBLBitmap(@file) elsif fname =~ /\.jpg$/i @file = open(fname) if alpha.nil? super newSWFJpegBitmap(@file) else @alpha = open(alpha) super newSWFJpegWithAlpha(@file, @alpha) end end define_finalizer(self) {destroySWFBitmap(@this)} end def getWidth return SWFBitmap_getWidth(@this) end def getHeight return SWFBitmap_getHeight(@this) endend# deprecatedclass SWFDBLBitmap <SWFBitmap def initialize(fname) super newSWFDBLBitmap(open(fname)) endend# deprecatedclass JpegBitmap <SWFBitmap def initialize(fname, alpha=nil) if alpha.nil? super newSWFJpegBitmap(open(fname)) else super newSWFJpegWithAlpha(open(fname), open(alpha)) end endendclass SWFText <SWFBase def initialize super newSWFText2() define_finalizer(self) {destroySWFText(@this)} end def setFont(font) SWFText_setFont(@this, font.this) end def setHeight(height) SWFText_setHeight(@this, height) end def moveTo(x, y) SWFText_moveTo(@this, x, y) end def setColor(r, g, b, a=0xff) SWFText_setColor(@this, r, g, b, a) end def addString(s, advance=nil) SWFText_addString(@this, s, advance) end def setSpacing(spacing) SWFText_setSpacing(@this, spacing) end def getAscent return SWFText_getAscent(@this) end def getDescent return SWFText_getDescent(@this) end def getLeading return SWFText_getLeading(@this) end def getWidth(string) return SWFText_getWidth(@this, string) endendclass SWFTextField <SWFBase def initialize super newSWFTextField() define_finalizer(self) {destroySWFTextField(@this)} end def setFont(font) SWFTextField_setFont(@this, font.this) end def setBounds(width, height) SWFTextField_setBounds(@this, width, height) end def setFlags(flags) SWFTextField_setFlags(@this, flags) end def setColor(r, g, b, a=0xff) SWFTextField_setColor(@this, r, g, b, a) end def setVariableName(name) SWFTextField_setVariableName(@this, name) end def addString(string) SWFTextField_addString(@this, string) end def setHeight( height) SWFTextField_setHeight(@this, height) end def setLeftMargin(leftMargin) SWFTextField_setLeftMargin(@this, leftMargin) end def setRightMargin(rightMargin) SWFTextField_setRightMargin(@this, rightMargin) end def setIndentation(indentation) SWFTextField_setIndentation(@this, indentation) end def setLineSpacing(lineSpacing) SWFTextField_setLineSpacing(@this, lineSpacing) end def setAlignment(alignment) SWFTextField_setAlignment(@this, alignment) # or just end def align(alignment) SWFTextField_setAlignment(@this, alignment) end def setLength(length) SWFTextField_setLength(@this, length) endendclass SWFSound <SWFBase def initialize(fname) @file = open(fname) super newSWFSound(@file) end # display list destroys this..endclass SWFAction <SWFBase def initialize(script) super compileSWFActionCode(script) end # assigned object will destroy this..endclass SWFButton <SWFBase def initialize super newSWFButton() @shapes = [] define_finalizer(self) {destroySWFButton(@this)} end def setUp(character) addShape(character, SWFBUTTON_UP) end def setDown(character) addShape(character, SWFBUTTON_DOWN) end def setOver(character) addShape(character, SWFBUTTON_OVER) end def setHit(character) addShape(character, SWFBUTTON_HIT) end def addShape(character, flags) @shapes.push(character) SWFButton_addShape(@this, character.this, flags) end def addAction(action, flags) SWFButton_addAction(@this, action.this, flags) end def SWFButton.SWFBUTTON_KEYPRESS(c) return swfButton_keypress(c) endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -