⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsjump.java

📁 利用opensource的开源jar实现生成flash文件
💻 JAVA
字号:
/*
 * FSJump.java
 * Transform
 * 
 * Copyright (c) 2001-2006 Flagstone Software Ltd. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 *
 *  * Redistributions of source code must retain the above copyright notice, this
 *    list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above copyright notice, 
 *    this list of conditions and the following disclaimer in the documentation 
 *    and/or other materials provided with the distribution.
 *  * Neither the name of Flagstone Software Ltd. nor the names of its contributors 
 *    may be used to endorse or promote products derived from this software 
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
 * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 */

package com.flagstone.transform;

/**
The FSJump action performs an unconditional branch to control the actions executed by the Flash Player. 
 
<p>When executed the FSJump action adds an offset to the instruction pointer and execution of the stream of actions continues from that address.</p>

<p>Although the Flash Player contains an instruction pointer it does not support an explicit address space. The instruction pointer is used to reference actions within the current stream of actions being executed whether they are associated with a given frame, button or movie clip. The value contained in the instruction pointer is the address relative to the start of the current stream.</p>

<table class="datasheet">

<tr><th align="left" colspan="2">Attributes</th></tr>

<tr>
<td><a name="FSJump_0">type</a></td>
<td>Identifies the action when it is encoded. Read-only.</td>
</tr>

<tr>
<td><a name="FSJump_1">offset</a></td>
<td>The offset, relative to the current instruction pointer, to jump to.</td>
</tr>
</table>

<p>The offset is a signed number allowing branches up to -32768 to 32767 bytes. The instruction pointer points to the next instruction so specifying an offset of zero will have no effect on the sequence of instructions executed.</p>

<pre>
FSDoAction actions = new FSDoAction();

actions.add(new FSJump(32));
</pre>

<h1 class="datasheet">History</h1>

<p>The FSJump class represents the ActionJump action of the Macromedia Flash (SWF) File Format Specification. It was introduced in Flash 4.</p>
 */  
public class FSJump extends FSActionObject
{
    private int offset = 0;

    /**
     * Construct an FSJump object, initalizing it with values decoded from an 
     * encoded object.
     * 
     * @param coder an FSCoder containing the binary data.
     */
    public FSJump(FSCoder coder)
    {
        super(Jump);
        decode(coder);
    }
    /** Constructs an FSJump action with the specified offset. The offset must be in the range -32768..32767.

        @param anOffset the number of bytes to add to the instruction pointer.
        */
    public FSJump(int anOffset)
    {
        super(Jump);
        setOffset(anOffset);
    }
    /**
     * Constructs an FSJump object by copying values from an existing object.
     *
     * @param obj an FSJump object.
     */
    public FSJump(FSJump obj)
    {
        super(obj);
        offset = obj.offset;
    }    

    /** Gets the offset that will be added to the instruction pointer.

        @return the number of bytes to add to the instruction pointer.
        */
    public int getOffset() { return offset; }

    /** Sets the offset to add to the instruction pointer. The offset must be in the range -32768..32767.

        @param anOffset the number of bytes to add to the instruction pointer.
        */
    public void setOffset(int anOffset)
    {
        offset = anOffset;
    } 

    public boolean equals(Object anObject)
    {
        boolean result = false;
        
        if (super.equals(anObject))
            result = offset == ((FSJump)anObject).getOffset();

        return result;
    }

    public void appendDescription(StringBuffer buffer, int depth)
    {
        buffer.append(name());
        
        if (depth > 0)
        {
            buffer.append(": { ");
            Transform.append(buffer, "offset", offset);
            buffer.append("}");
        }
    }

    public int length(FSCoder coder)
    {
        super.length(coder);
        
        length += 2;
        
        return length;
    }
    
    public void encode(FSCoder coder)
    {
        super.encode(coder);
        coder.writeWord(offset, 2);
        coder.endObject(name());
    }
    
    public void decode(FSCoder coder)
    {
        super.decode(coder);
        offset = coder.readWord(2, true);
        coder.endObject(name());
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -