Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
src/QTButtonDemo.java
/* |
* QuickTime for Java SDK Sample Code |
Usage subject to restrictions in SDK License Agreement |
* Copyright: © 1996-1999 Apple Computer, Inc. |
*/ |
import java.awt.*; |
import java.awt.event.*; |
import java.io.*; |
import quicktime.*; |
import quicktime.app.*; |
import quicktime.app.actions.*; |
import quicktime.app.anim.*; |
import quicktime.app.display.*; |
import quicktime.app.event.*; |
import quicktime.app.image.*; |
import quicktime.app.players.*; |
import quicktime.app.ui.*; |
import quicktime.io.*; |
import quicktime.qd.*; |
import quicktime.std.*; |
import quicktime.std.image.*; |
import quicktime.std.movies.*; |
import quicktime.util.*; |
public class QTButtonDemo extends Frame { |
public static void main(String args[]) { |
try { |
QTSession.open(); |
Frame window = new QTButtonDemo(); |
window.addWindowListener(new WindowAdapter() { |
public void windowClosing (WindowEvent e) { |
QTSession.close(); |
((Frame)e.getSource()).dispose(); |
} |
public void windowClosed (WindowEvent e) { |
System.exit(0); |
} |
}); |
window.pack(); |
window.show(); |
} catch (QTException e) { |
if (e.errorCode() == Errors.userCanceledErr) { |
QTSession.close(); |
System.exit(0); |
} |
e.printStackTrace(); |
QTSession.close(); |
} |
} |
QTButtonDemo() throws QTException { |
super("QTButtonDemo"); |
// get movie |
QTFile movieFile = QTFile.standardGetFilePreview(QTFile.kStandardQTFileTypes); |
OpenMovieFile openedFile = OpenMovieFile.asRead (movieFile); |
Movie mov = Movie.fromFile (openedFile); |
mov.getTimeBase().setFlags (StdQTConstants.loopTimeBase); |
final MoviePresenter moviePresenter = new MoviePresenter (mov); |
QDRect size = moviePresenter.getDisplayBounds(); |
// make buttons |
// create the images using the QDGraphics, you can use the above calls to use actual image files |
QDRect r20 = new QDRect (20, 20); |
ImagePresenter redImage = makeImagePresenter (r20, QDColor.red); |
ImagePresenter greenImage = makeImagePresenter (r20, QDColor.green); |
ImagePresenter blueImage = makeImagePresenter (r20, QDColor.blue); |
ImagePresenter cyanImage = makeImagePresenter (r20, QDColor.cyan); |
// create a release button which fires on mouse release |
// this also has a rollover image - an image that changes when the user rolls over this button |
ReleaseButton relButton = new ReleaseButton (redImage, greenImage, blueImage, cyanImage); |
relButton.setLabel ("Release Button"); |
relButton.setLocation (0, size.getHeight()); |
// set an action to set the rate of the movie |
relButton.addActionListener(new QTActionListener() { |
public void actionPerformed(QTActionEvent e) { |
try { |
if (moviePresenter.getRate() == 0) { |
moviePresenter.setRate (1); |
} else |
moviePresenter.setRate (0); |
}catch (QTException ex) { |
ex.printStackTrace(); |
} |
} |
}); |
//creates a press action button that fires when the mouse is on the button and the mouse button is pressed. |
PressActionButton pressButton = new PressActionButton (blueImage,redImage, greenImage); |
pressButton.setLabel ("Press Button"); |
pressButton.setLocation (size.getWidth() - 20, size.getHeight()); |
//action will change the time of the movie and print out the action event |
pressButton.addActionListener (new QTActionListener() { |
public void actionPerformed (QTActionEvent e) { |
try { |
moviePresenter.setTime (moviePresenter.getTime() - 10); |
} catch( QTException ex) { |
ex.printStackTrace(); |
} |
} |
}); |
// create a Compositor to hold the movie and the two buttons |
Compositor comp = new Compositor (new QDGraphics (new QDRect(size.getWidth(), size.getHeight() + 20)), QDColor.yellow, 10, 1); |
comp.getTimer().setRate(1); |
//add the presenters and the buttons to the compositor |
comp.addMember(moviePresenter); |
comp.addMember(relButton); |
comp.addMember(pressButton); |
QTMouseTargetController buttonController = new QTMouseTargetController (false); |
comp.addController (buttonController); |
buttonController.addMember(pressButton); |
buttonController.addMember(relButton); |
buttonController.addQTMouseListener (new ButtonActivator () ); |
// create the canvas and display it in the Frame |
QTCanvas myQTCanvas = new QTCanvas (QTCanvas.kPerformanceResize, 0.5f, 0.5f); |
myQTCanvas.setClient (comp, true); |
add("Center", myQTCanvas); |
} |
//create a raw-encoded image and its description from the QDGraphics and create a ImagePresenter to be used |
//as the image for the buttons |
private static ImagePresenter makeImagePresenter (QDRect size, QDColor col) throws QTException { |
QDGraphics g = new QDGraphics (QDConstants.k4IndexedPixelFormat, size); |
g.setBackColor (col); |
g.eraseRect (null); |
PixMap pm = g.getPixMap(); |
EncodedImage ei = pm.getPixelData(); |
ImageDescription id = new ImageDescription (pm); |
return ImagePresenter.fromQTImage (ei, id); |
} |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14