亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? simpleplayercanvas.java

?? 索愛的多媒體例程,包括播放音樂,視頻等
?? JAVA
字號:
/* * @(#)SimplePlayerCanvas.java	1.2 03/01/22 * * Copyright (c) 2000-2003 Sun Microsystems, Inc. All rights reserved.  * PROPRIETARY/CONFIDENTIAL * Use is subject to license terms */package example.mmademo;import java.util.*;import java.io.*;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import javax.microedition.media.*;import javax.microedition.media.control.*;/** * MMA player main window for media files, implemented as a Canvas * * @author Florian Bomers * @version 1.10 */public class SimplePlayerCanvas extends Canvas     implements SimplePlayerGUI.Parent, Utils.ContentHandler, Runnable {        private static int PLAYER_TITLE_TOP = 2;    private static int LOGO_GAP = 2;    private static int SONG_TITLE_GAP = 2;    private static int KARAOKE_GAP = 1;    private static int TIME_GAP = 2;    private static int RATE_GAP = 2;    private static int STATUS_GAP = 2;        private String title;    private Image logo = null;    private SimplePlayerGUI gui; // default: null    private Utils.BreadCrumbTrail parent;        private String status="";    private String feedback="";    private String fileTitle="";    int displayWidth = -1;    int displayHeight = -1;    int textHeight=10;    int logoTop = 0;    int songTitleTop = 0;    int timeRateTop = 0;    int timeWidth = 0;    int karaokeTop = 0;    int karaokeHeight = 0;    int maxKaraokeLines = 0;    int feedbackTop = 0;    int statusTop = 0;        int[] karaokeParams = new int[4];    private static void debugOut(String s) {	Utils.debugOut("SimplePlayerCanvas: "+s);    }    public SimplePlayerCanvas(String title, Utils.BreadCrumbTrail parent) {        super();		this.parent = parent;		this.title = title;    }        ////////////////////////////// interface Utils.BreadCrumbTrail /////////////////    public Displayable go(Displayable d) {    	return parent.go(d);    }    public Displayable goBack() {    	return parent.goBack();    }        public Displayable replaceCurrent(Displayable d) {    	return parent.replaceCurrent(d);    }        public Displayable getCurrentDisplayable() {    	return parent.getCurrentDisplayable();    }    /////////////////////////// interface SimplePlayerGUI.Parent //////////////////        public Utils.BreadCrumbTrail getParent() {    	return parent;    }        public String getTitle() {    	return title;    }        public void setStatus(String s) {    	status=s;    	repaint(0, statusTop, displayWidth, textHeight);    	serviceRepaints();    }        public void setFeedback(String s) {    	feedback=s;    	repaint(0, feedbackTop, displayWidth, textHeight);    	serviceRepaints();    }        public void setFileTitle(String s) {    	fileTitle = s;    	repaint(0, songTitleTop, displayWidth, textHeight);    	serviceRepaints();    }    public void updateKaraoke() {    	repaint(0, karaokeTop, displayWidth, karaokeHeight);    	serviceRepaints();    }        public void updateTime() {    	repaint(0, timeRateTop, timeWidth, textHeight);    	serviceRepaints();    }    public void updateRate() {    	repaint(timeWidth, timeRateTop, displayWidth, textHeight);    	serviceRepaints();    }        public void updateDisplay() {	repaint();	serviceRepaints();    }    public void fullScreen(boolean value) {    	setFeedback("No fullscreen mode!");    	// nothing to do    }    //////////////////////////////// interface Utils.ContentHandler ///////////////////////////////        public synchronized void close() {    	if (gui != null) {	    gui.closePlayer();	    gui = null;    	}    }        public boolean canHandle(String url) {    	return true;    }        public void handle(String name, String url) {    	Utils.debugOut("SimplePlayerCanvas: handle "+url);		getGUI().setParent(this);		gui.setSong(name, url);		doHandle();    }    public void handle(String name, InputStream is, String contentType) {		getGUI().setParent(this);		gui.setSong(name, is, contentType);		doHandle();    }    public void handle(String name, Player player) {		getGUI().setParent(this);		gui.setSong(name, player);		doHandle();    }    /////////////////////////// implementation /////////////////////////////////////////////////    private synchronized SimplePlayerGUI getGUI() {	if (gui == null) {	    gui = new SimplePlayerGUI();	    gui.initialize(title, this);	}	return gui;    }    	    private void doHandle() {        // START HACK		// I want to display the player first, and THEN start prefetching.		// the only way I was able to achieve this was by creating a new thread.		repaint();		serviceRepaints();		//midiPlayer.setIndex(i);		//midiPlayer.startPlayer();		//display.callSerially(this);		new Thread(this).start();    }    public void run() {		gui.startPlayer();    }    // END HACK    protected void keyPressed(int keycode) {    	try {	    SimplePlayerGUI gui = getGUI();	    switch (keycode) {	    case KEY_NUM1:		// Jump backward		gui.skip(true);		break;	    case KEY_NUM2:		gui.togglePlayer();		break;	    case KEY_NUM3:		// Jump forward		gui.skip(false);		break;	    case KEY_NUM7:		//gui.setMediaTime(0);		break;	    case KEY_NUM5:	        gui.pausePlayer();		break;	    case KEY_NUM9:		break;	    case KEY_NUM4:		gui.changeRate(true);		break;	    case KEY_NUM8:		fullScreen(true);		break;	    case KEY_NUM6:		gui.changeRate(false);		break;	    case KEY_NUM0:		gui.toggleMute();		break;	    case KEY_STAR:		gui.changeVolume(true);		//gui.stopAfterTime();		break;	    case KEY_POUND:		gui.changeVolume(false);		break;	    default:		int code = getGameAction(keycode);		if (code == RIGHT) {		    gui.transpose(false);		} else if (code == LEFT) {		    gui.transpose(true);		}	    }	} catch (Throwable t) {	    Utils.error(t, parent);	}    }        private boolean intersects(int clipY, int clipHeight, int y, int h) {    	return (clipY<=y+h && clipY+clipHeight>=y);    }        public void paint(Graphics g) {	try {	    if (displayHeight==-1) {		displayWidth = getWidth();		displayHeight = getHeight();		textHeight = g.getFont().getHeight();		if (logo == null && gui != null) {		    logo = gui.getLogo();		}		int currTop = PLAYER_TITLE_TOP + textHeight;		if (logo != null) {		    currTop += LOGO_GAP;		    logoTop = currTop;		    currTop += logo.getHeight();		}		currTop += SONG_TITLE_GAP;		songTitleTop = currTop;		currTop += TIME_GAP + textHeight;		timeRateTop = currTop;		timeWidth = g.getFont().stringWidth("0:00:0  ");		currTop +=  textHeight+KARAOKE_GAP;				// feedback: before-last line		feedbackTop = displayHeight - 2*textHeight - STATUS_GAP;		// karaoke: squeeze as many lines as possible in between rate and feedback		maxKaraokeLines = (feedbackTop - currTop) / (textHeight + KARAOKE_GAP);		karaokeHeight = maxKaraokeLines * (textHeight + KARAOKE_GAP);		karaokeTop = currTop + ((feedbackTop - currTop - karaokeHeight) / 2);		// status: last line.		statusTop = displayHeight - textHeight;	    }	    int clipX=g.getClipX();	    int clipY=g.getClipY();	    int clipWidth=g.getClipWidth();	    int clipHeight=g.getClipHeight();	    // background	    g.setColor(0);	    g.fillRect(clipX, clipY, clipWidth, clipHeight);	    // title	    if (intersects(clipY, clipHeight, PLAYER_TITLE_TOP, textHeight)) {		g.setColor(0xFF7f00);		g.drawString(title, displayWidth>>1, PLAYER_TITLE_TOP, Graphics.TOP | Graphics.HCENTER);	    }	    // logo	    if (logo != null && intersects(clipY, clipHeight, logoTop, logo.getHeight())) {		g.drawImage(logo, displayWidth/2, logoTop, Graphics.TOP | Graphics.HCENTER);	    }	    // song name (+ duration)	    if (intersects(clipY, clipHeight, songTitleTop, textHeight)) {		g.setColor(0xFF7F00);		g.drawString(fileTitle, displayWidth>>1, songTitleTop, Graphics.TOP | Graphics.HCENTER);	    }	    if (gui!=null) {		// time and rate/tempo display		if (intersects(clipY, clipHeight, timeRateTop, textHeight)) {		    if (intersects(clipX, clipWidth, 0, timeWidth)) {		    	g.setColor(0xF0F0F0);		    	g.drawString(gui.getMediaTimeStr(), 0, timeRateTop, Graphics.TOP | Graphics.LEFT);		    }		    if (intersects(clipX, clipWidth, timeWidth+1, displayWidth)) {			// tempo/rate display			if (gui.hasTempoControl()) {			    g.setColor(0xF0F0F0);			    g.drawString(gui.getTempoStr(), displayWidth, timeRateTop, Graphics.TOP | Graphics.RIGHT);		    	} else {			    g.setColor(0xF0F0F0);			    g.drawString(gui.getRateStr(), displayWidth, timeRateTop, Graphics.TOP | Graphics.RIGHT);		    	}		    }		}		// Karaoke text		if (intersects(clipY, clipHeight, karaokeTop, karaokeHeight)) {		    String[] lines = gui.getKaraokeStr(karaokeParams);		    int currTop = karaokeTop;		    int currLine = karaokeParams[SimplePlayerGUI.KARAOKE_LINE];		    int lineCount = karaokeParams[SimplePlayerGUI.KARAOKE_LINE_COUNT];		    int thisLine = 0;		    if (lineCount > maxKaraokeLines) {		    	thisLine = currLine - 1;		    	if (thisLine < 0) {			    thisLine = 0;		    	}		    	if (thisLine + maxKaraokeLines > lineCount) {			    thisLine = lineCount - maxKaraokeLines;		    	} else if (lineCount - thisLine > maxKaraokeLines) {			    lineCount = thisLine + maxKaraokeLines;		    	}		    }		    int syllLen = karaokeParams[SimplePlayerGUI.KARAOKE_SYLLABLE_LENGTH];		    int currLinePos = karaokeParams[SimplePlayerGUI.KARAOKE_LINE_INDEX];		    for (; thisLine < lineCount; thisLine++) {		    	if (currLine != thisLine || syllLen == 0) {			    if (thisLine < currLine) { // && syllLen > 0 				// already sung text in yellow				g.setColor(0xFFFF30);			    } else {				// other stuff in grey				g.setColor(0x909090);			    }			    g.drawString(lines[thisLine], 0, currTop, Graphics.TOP | Graphics.LEFT);		    	} else {			    // first draw any text before current position			    int xPos = 0;			    String currText;			    if (currLinePos > 0) {				currText = lines[thisLine].substring(0, currLinePos);				g.setColor(0xFFFF30); // yellow				g.drawString(currText, 0, currTop, Graphics.TOP | Graphics.LEFT);				xPos += g.getFont().stringWidth(currText);			    }			    // colorize the current syllable			    g.setColor(0xFFFF30);			    currText = lines[thisLine].substring(currLinePos, currLinePos + syllLen);			    g.drawString(currText, xPos, currTop, Graphics.TOP | Graphics.LEFT);			    if (currLinePos + syllLen < lines[thisLine].length()) {				xPos += g.getFont().stringWidth(currText);				currText = lines[thisLine].substring(currLinePos + syllLen);				g.setColor(0x909090); // grey				g.drawString(currText, xPos, currTop, Graphics.TOP | Graphics.LEFT);			    }			}		    	currTop += textHeight + KARAOKE_GAP;		    }		}	    }	    // Feedback	    if (intersects(clipY, clipHeight, feedbackTop, textHeight)) {		g.setColor(0xE0E0FF);		g.drawString(feedback, 0, feedbackTop, Graphics.TOP | Graphics.LEFT);	    }	    // Status	    if (intersects(clipY, clipHeight, displayHeight-textHeight, textHeight)) {		g.setColor(0xFAFAFA);		g.drawString(status, 0, displayHeight, Graphics.BOTTOM | Graphics.LEFT);	    }	} catch (Throwable t) {	    debugOut("in paint(): "+Utils.friendlyException(t));	}    }    // for debugging    public String toString() {    	return "SimplePlayerCanvas";    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久―日本道色综合久久| 91麻豆精品91久久久久同性| 日本一区二区三区四区 | 成人中文字幕合集| 国产精品久久久久久久久久久免费看| 福利91精品一区二区三区| 中文字幕第一区二区| 欧美日韩卡一卡二| 亚洲一卡二卡三卡四卡五卡| 制服丝袜在线91| 国产精品一区2区| 亚洲视频1区2区| 日本高清视频一区二区| 午夜精品一区二区三区免费视频| 欧美老人xxxx18| 久久精品国产99国产| 国产欧美视频在线观看| 91影视在线播放| 亚洲成a人v欧美综合天堂下载| 日韩三级伦理片妻子的秘密按摩| 国产一区二区不卡老阿姨| 亚洲欧美综合在线精品| 欧美剧在线免费观看网站| 精品中文字幕一区二区小辣椒| 国产日韩av一区| 欧美午夜电影网| 国产一区999| 亚洲永久精品大片| 亚洲精品一区二区三区精华液 | 伊人色综合久久天天人手人婷| 3d动漫精品啪啪1区2区免费| 国产露脸91国语对白| 亚洲综合在线观看视频| 精品1区2区在线观看| 91婷婷韩国欧美一区二区| 石原莉奈在线亚洲二区| 国产精品免费av| 欧美日韩精品综合在线| 懂色av中文一区二区三区 | 中文字幕一区视频| 91精品一区二区三区久久久久久| 国产 欧美在线| 日韩福利电影在线| 18欧美乱大交hd1984| 日韩一本二本av| 色婷婷国产精品综合在线观看| 国产最新精品免费| 婷婷激情综合网| 亚洲欧美一区二区不卡| 亚洲摸摸操操av| 日韩精品专区在线| 在线观看91视频| 成人午夜在线播放| 韩国三级在线一区| 日韩av中文在线观看| 亚洲精品福利视频网站| 国产精品久久国产精麻豆99网站| 日韩欧美另类在线| 欧美日韩国产123区| 91丨porny丨最新| av在线这里只有精品| 国产精品白丝av| 久久99国内精品| 日韩电影一区二区三区四区| 一级精品视频在线观看宜春院| 国产精品久久久久久久久久久免费看| 久久一留热品黄| 精品国产在天天线2019| 欧美精品第一页| 欧美妇女性影城| 欧美日韩国产成人在线免费| 欧美亚洲高清一区二区三区不卡| 97久久超碰精品国产| 国产 欧美在线| 成人小视频免费观看| 成人av动漫在线| 白白色亚洲国产精品| 不卡一区二区三区四区| 成人一级视频在线观看| 成人久久视频在线观看| 成人av小说网| 99久久综合精品| 91丝袜呻吟高潮美腿白嫩在线观看| www.日韩在线| 色狠狠综合天天综合综合| 91精品福利在线| 欧美伊人久久久久久久久影院| 欧美伊人久久久久久久久影院| 91久久免费观看| 欧美色图12p| 欧美一区二区视频观看视频| 欧美一区二区视频在线观看2020| 日韩一区二区在线观看视频播放| 日韩一级免费一区| 久久久噜噜噜久噜久久综合| 中文乱码免费一区二区| 亚洲欧洲av在线| 亚洲国产精品久久人人爱蜜臀 | 亚洲国产日韩一级| 日本成人在线一区| 国产一区二区91| 91丨九色丨国产丨porny| 欧美日免费三级在线| 91精品国产麻豆国产自产在线 | 亚洲男人的天堂在线观看| 亚洲成人免费观看| 国产在线不卡视频| 91浏览器入口在线观看| 在线成人免费视频| 国产欧美一区二区精品性色| 亚洲综合色网站| 秋霞影院一区二区| 成人99免费视频| 欧美疯狂做受xxxx富婆| 久久精品人人爽人人爽| 亚洲美女免费在线| 精东粉嫩av免费一区二区三区| 成人免费毛片高清视频| 欧美精品在欧美一区二区少妇| 久久品道一品道久久精品| 亚洲精品成人天堂一二三| 精品一区二区影视| 91国偷自产一区二区三区观看| 精品久久久久久亚洲综合网| 亚洲欧美日韩国产中文在线| 美国十次了思思久久精品导航| 成+人+亚洲+综合天堂| 欧美群妇大交群中文字幕| 中文字幕av免费专区久久| 亚洲国产日韩a在线播放性色| 国产精品一区二区在线看| 欧美日本一区二区三区四区 | 成人在线视频一区| 69堂成人精品免费视频| 亚洲天堂av一区| 国产美女一区二区三区| 欧美四级电影在线观看| 日本一区二区免费在线观看视频| 亚洲va欧美va人人爽| 成人蜜臀av电影| 久久亚洲影视婷婷| 日韩精品一卡二卡三卡四卡无卡| caoporn国产一区二区| 精品久久99ma| 婷婷综合五月天| 色天使久久综合网天天| 国产精品免费看片| 国产成人啪免费观看软件| 欧美一级电影网站| 丝瓜av网站精品一区二区| 色拍拍在线精品视频8848| 国产精品视频麻豆| 国产一区二区三区美女| 日韩精品资源二区在线| 日日夜夜免费精品| 欧洲国内综合视频| 亚洲精品国产成人久久av盗摄 | 欧美日韩在线播放三区四区| 亚洲欧洲一区二区三区| 国产999精品久久| 亚洲精品一区二区三区影院 | 26uuu色噜噜精品一区二区| 性久久久久久久久| 91精品办公室少妇高潮对白| 一区二区中文视频| 99国产精品国产精品久久| 久久久国产精品午夜一区ai换脸| 久草精品在线观看| 精品国一区二区三区| 久久超碰97人人做人人爱| 欧美v国产在线一区二区三区| 久久国产剧场电影| 欧美成va人片在线观看| 国产一区二区三区蝌蚪| 欧美国产乱子伦 | 一本色道亚洲精品aⅴ| 椎名由奈av一区二区三区| 91网址在线看| 夜夜操天天操亚洲| 精品视频一区 二区 三区| 午夜国产不卡在线观看视频| 欧美久久一二区| 九九精品一区二区| 中文一区二区完整视频在线观看| 成人免费视频播放| 一区二区三区在线视频免费观看| 在线精品国精品国产尤物884a| 亚洲高清视频中文字幕| 欧美一区二区三区小说| 精品一区二区三区免费| 国产婷婷色一区二区三区在线| 国产99精品视频| 亚洲午夜免费电影| 欧美电影免费观看高清完整版在线| 精油按摩中文字幕久久| 国产精品国产三级国产aⅴ入口| 在线日韩一区二区| 麻豆久久久久久久| 中文字幕在线视频一区| 欧美日韩一卡二卡|