affectorhandler.java

来自「Sony Ericsson手机上的Facebook客户端全套代码」· Java 代码 · 共 178 行

JAVA
178
字号
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   AffectorHandler.java

package se.southend.drops.integeraffector;

import java.util.Vector;
import se.southend.drops.screen.ScreenEngine;

// Referenced classes of package se.southend.drops.integeraffector:
//            Affector

public class AffectorHandler
{

    public AffectorHandler()
    {
        affectors = new Vector();
        affectDuringDelay = false;
        removeFinished = true;
    }

    public static AffectorHandler getInstance()
    {
        if(instance == null)
            instance = new AffectorHandler();
        return instance;
    }

    public void affectDuringDelay(boolean affectDuringDelay)
    {
        this.affectDuringDelay = affectDuringDelay;
    }

    public void removeFinishedAffectors(boolean removeFinished)
    {
        this.removeFinished = removeFinished;
    }

    public Affector addAffector(Affector affector)
    {
        return addAffector(affector, null);
    }

    public Affector addAffector(Affector affector, Object id)
    {
        initAffector(affector, id);
        affectors.addElement(affector);
        return affector;
    }

    public void insertAffectorAt(int index, Affector affector)
    {
        insertAffectorAt(index, affector, null);
    }

    public void insertAffectorAt(int index, Affector affector, Object id)
    {
        initAffector(affector, id);
        affectors.insertElementAt(affector, index);
    }

    public void removeAffector(Affector affector)
    {
        affectors.removeElement(affector);
    }

    private void updateAffector(Affector affector)
    {
        if(affector.isRemoved)
        {
            removeAffector(affector);
        } else
        {
            if(affector.currentTime >= affector.startTime)
            {
                if(!affector.playedFinish)
                    affector.update(affector.currentTime);
                if(!affector.hasStarted)
                {
                    affector.hasStarted = true;
                    affector.start();
                }
                affector.process();
            } else
            if(affectDuringDelay)
                affector.process();
            if(affector.isFinished())
            {
                if(!affector.playedFinish)
                {
                    affector.isRemoved = true;
                    affector.playedFinish = true;
                    affector.finish();
                }
                if(removeFinished)
                    removeAffector(affector);
            }
        }
    }

    public void stopAffectorsWithId(Object id)
    {
        removeAffectorsWithId(id, true);
    }

    public void empty()
    {
        affectors.removeAllElements();
    }

    public void removeAffectorsWithId(Object id)
    {
        removeAffectorsWithId(id, false);
    }

    public Affector findAffector(Object id)
    {
        for(int i = 0; i < affectors.size(); i++)
        {
            Affector affector = (Affector)affectors.elementAt(i);
            if(affector.getId() != null && affector.getId() == id)
                return affector;
        }

        return null;
    }

    public int getNbrAffectors()
    {
        return affectors.size();
    }

    public void process()
    {
        process(ScreenEngine.getInstance().getTime());
    }

    public void process(long time)
    {
        for(int i = 0; i < affectors.size(); i++)
        {
            Affector affector = (Affector)affectors.elementAt(i);
            affector.currentTime = time;
            updateAffector(affector);
        }

    }

    private void initAffector(Affector affector, Object id)
    {
        affector.setId(id);
        long time = ScreenEngine.getInstance().getTime();
        affector.currentTime = time;
        updateAffector(affector);
    }

    private synchronized void removeAffectorsWithId(Object id, boolean stop)
    {
        for(int i = 0; i < affectors.size(); i++)
        {
            if(((Affector)affectors.elementAt(i)).getId() != id)
                continue;
            Affector affector = (Affector)affectors.elementAt(i);
            if(stop && !affector.playedFinish)
                affector.finish();
            affectors.removeElementAt(i--);
        }

    }

    private static AffectorHandler instance;
    public Vector affectors;
    private boolean affectDuringDelay;
    private boolean removeFinished;
}

⌨️ 快捷键说明

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