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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ch5.htm

?? 21天學(xué)會(huì)用JAVA開發(fā)網(wǎng)絡(luò)游戲 英文版本喜歡大家能喜歡
?? HTM
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
in this section. The <TT><FONT FACE="Courier">isErrorID</FONT></TT>
and <TT><FONT FACE="Courier">isErrorAny</FONT></TT> methods check
the error status of images being tracked. The only difference
between the two is that <TT><FONT FACE="Courier">isErrorID</FONT></TT>
checks on images with a certain identifier, whereas <TT><FONT FACE="Courier">isErrorAny</FONT></TT>
checks on all images. Both of these methods basically check the
status of each image for the <TT><FONT FACE="Courier">ERRORED</FONT></TT>
flag. Note that both methods will return <TT><FONT FACE="Courier">true</FONT></TT>
if any of the images have errors; it's up to you to determine
which specific images had errors.
<P>
If you use <TT><FONT FACE="Courier">isErrorID</FONT></TT> or <TT><FONT FACE="Courier">isErrorAny</FONT></TT>
and find out that there are load errors, you need to find out
which images have errors. You do this by using the <TT><FONT FACE="Courier">getErrorsID</FONT></TT>
and <TT><FONT FACE="Courier">getErrorsAny</FONT></TT> methods.
These two methods both return an array of <TT><FONT FACE="Courier">Object</FONT></TT>s
containing the media objects that have load errors. In the current
implementation of the <TT><FONT FACE="Courier">MediaTracker</FONT></TT>
class, this array is always filled with <TT><FONT FACE="Courier">Image</FONT></TT>
objects. If there are no errors, these methods return <TT><FONT FACE="Courier">null</FONT></TT>.
Similar to the <TT><FONT FACE="Courier">isErrorID</FONT></TT>
and <TT><FONT FACE="Courier">isErrorAny</FONT></TT> methods, <TT><FONT FACE="Courier">getErrorsID</FONT></TT>
and <TT><FONT FACE="Courier">getErrorsAny</FONT></TT> differ only
by the images that they check; <TT><FONT FACE="Courier">getErrorsID</FONT></TT>
returns errored images matching the passed identifier, and <TT><FONT FACE="Courier">getErrorsAny</FONT></TT>
returns all errored images.
<P>
That wraps up the description of the <TT><FONT FACE="Courier">MediaTracker</FONT></TT>
class. Now that you understand what the class is all about, you're
probably ready to see it in action. Read on!
<H3><A NAME="UsingtheMediaTracker"><B>Using the Media Tracker</B></A>
</H3>
<P>
With the media tracker, you know exactly when certain images have
been transferred and are ready to use. This enables you to display
alternative output based on whether or not images have finished
transferring. The Tarantulas sample applet, which is located on
the accompanying CD-ROM, demonstrates how to use the media tracker
to track the loading of multiple images and display them only
when they have all finished transferring. Figure 5.9 shows the
Tarantulas applet while the images are still being loaded.
<P>
<A HREF="f5-9.gif" ><B>Figure 5.9 : </B><I>The Tarantulas applet with images partially loaded.</I></A>
<P>
As you can see, none of the images are displayed until they have
all been successfully transferred. While they are loading, a text
message is displayed informing the user that the images are still
in the process of loading. This is a pretty simple enhancement
to the applet, but one that makes the applet look much more professional.
By displaying a simple message while media objects are loading,
you solve the problem of drawing partially transferred images,
and more important, the problem of displaying animations with
missing images. The source code for Tarantulas is shown in Listing
5.3.
<HR>
<BLOCKQUOTE>
<B>Listing 5.3. The Tarantulas sample applet.<BR>
</B>
</BLOCKQUOTE>
<BLOCKQUOTE>
<TT><FONT FACE="Courier">import java.applet.*;<BR>
import java.awt.*;<BR>
<BR>
public class Tarantulas extends Applet implements Runnable {<BR>
&nbsp;&nbsp;Image&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img[]
= new Image[8];<BR>
&nbsp;&nbsp;Thread&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thread;
<BR>
&nbsp;&nbsp;MediaTracker&nbsp;&nbsp;tracker;<BR>
<BR>
&nbsp;&nbsp;public void init() {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;tracker = new MediaTracker(this);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; 8; i++) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;img[i] = getImage(getDocumentBase(),
&quot;Res/Tarant&quot; + i + &quot;.gif&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tracker.addImage(img[i], 0);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;public void start() {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;thread = new Thread(this);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;thread.start();<BR>
&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;public void stop() {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;thread.stop();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;thread = null;<BR>
&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;public void run() {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;try {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tracker.waitForID(0);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;catch (InterruptedException e) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;repaint();<BR>
&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;public void paint(Graphics g) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;if ((tracker.statusID(0, true) &amp; MediaTracker.ERRORED)
!= 0) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(Color.red);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.fillRect(0, 0, size().width,
size().height);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;if ((tracker.statusID(0, true) &amp; MediaTracker.COMPLETE)
!= 0) {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; 8;
i++)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.drawImage(img[i],
i * img[i].getWidth(this), 0, this);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;else {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Font&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font
= new Font(&quot;Helvetica&quot;, Font.PLAIN, 18);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FontMetrics fm = g.getFontMetrics(font);
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str
= new String(&quot;Loading images...&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setFont(font);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.drawString(str, (size().width
- fm.stringWidth(str)) / 2,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((size().height
- fm.getHeight()) / 2) + fm.getAscent());<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;}</FONT></TT>
</BLOCKQUOTE>
<BLOCKQUOTE>
<TT><FONT FACE="Courier">}</FONT></TT>
</BLOCKQUOTE>
<HR>
<P>
Begin examining the Tarantulas sample applet by looking at the
member variables. The <TT><FONT FACE="Courier">thread</FONT></TT>
member is a <TT><FONT FACE="Courier">Thread</FONT></TT> object
that is used by the media tracker to wait for the images to load.
The <TT><FONT FACE="Courier">tracker</FONT></TT> member is the
<TT><FONT FACE="Courier">MediaTracker</FONT></TT> object used
to track the images.
<P>
In the <TT><FONT FACE="Courier">init</FONT></TT> method, the <TT><FONT FACE="Courier">MediaTracker</FONT></TT>
object is created by passing <TT><FONT FACE="Courier">this</FONT></TT>
as the only parameter to its constructor. Because the <TT><FONT FACE="Courier">init</FONT></TT>
method is a member of the applet class, <TT><FONT FACE="Courier">Tarantulas</FONT></TT>,
<TT><FONT FACE="Courier">this</FONT></TT> refers to the applet
object. If you recall from the discussion of the <TT><FONT FACE="Courier">MediaTracker</FONT></TT>
class earlier in this chapter, the sole constructor parameter
is of type <TT><FONT FACE="Courier">Component</FONT></TT> and
represents the component on which the tracked images will be drawn.
All <TT><FONT FACE="Courier">Applet</FONT></TT> objects are derived
from <TT><FONT FACE="Courier">Component</FONT></TT>, so passing
the <TT><FONT FACE="Courier">Applet</FONT></TT> object (<TT><FONT FACE="Courier">this</FONT></TT>)
correctly initializes the media tracker.
<P>
Also notice that the images are added to the media tracker in
the <TT><FONT FACE="Courier">init</FONT></TT> method. You do this
by calling the <TT><FONT FACE="Courier">addImage</FONT></TT> method
of <TT><FONT FACE="Courier">MediaTracker</FONT></TT> and passing
the <TT><FONT FACE="Courier">Image</FONT></TT> object and an identifier.
Notice that <TT><FONT FACE="Courier">0</FONT></TT> is passed as
the identifier for all the images. This means that you are tracking
them as a group using <TT><FONT FACE="Courier">0</FONT></TT> to
uniquely identify them.
<P>
The <TT><FONT FACE="Courier">start</FONT></TT> and <TT><FONT FACE="Courier">stop</FONT></TT>
methods are used to manage the creation and destruction of the
<TT><FONT FACE="Courier">Thread</FONT></TT> member object. These
are pretty standard implementations for adding basic multithreading
support to an applet. You'll see these methods several times throughout
the book because most of the sample applets use threads extensively.
<P>
The tracking actually starts taking place with the <TT><FONT FACE="Courier">run</FONT></TT>
method. The <TT><FONT FACE="Courier">waitForID</FONT></TT> method
of <TT><FONT FACE="Courier">MediaTracker</FONT></TT> is called
within a <TT><FONT FACE="Courier">try</FONT></TT>-<TT><FONT FACE="Courier">catch</FONT></TT>
clause. It must be placed in this exception-handling clause because
an <TT><FONT FACE="Courier">InterruptedException</FONT></TT> will
be thrown if another thread interrupts this thread. Recall that
<TT><FONT FACE="Courier">waitForID</FONT></TT> is synchronous,
meaning that it won't return until all the images with the specified
identifier have been loaded. This means that the call to <TT><FONT FACE="Courier">repaint</FONT></TT>
will not occur until the images have all been loaded.
<P>
To understand why this works, you need to look at the last method
in Tarantulas, <TT><FONT FACE="Courier">paint</FONT></TT>. The
<TT><FONT FACE="Courier">paint</FONT></TT> method begins by checking
to see whether an error has occurred in loading the images. It
does this by calling <TT><FONT FACE="Courier">statusID</FONT></TT>
and checking the result against the <TT><FONT FACE="Courier">ERRORED</FONT></TT>
flag. If an error has occurred, <TT><FONT FACE="Courier">paint</FONT></TT>
fills the applet window with the color red to indicate an error.
Figure 5.10 shows what Tarantulas looks like when an error occurs.
<P>
<A HREF="f5-10.gif" ><B>Figure 5.10 : </B><I>The Tarantulas applet with an error loading the images.</I></A>
<P>
The next check performed by <TT><FONT FACE="Courier">paint</FONT></TT>
is to see whether the images have finished loading. It does this
by calling <TT><FONT FACE="Courier">statusID</FONT></TT> and comparing
the result with the <TT><FONT FACE="Courier">COMPLETE</FONT></TT>
flag. If the images have finished loading, the image array is
iterated through and each image is drawn on the applet window.
If the images have not finished loading, the text message <TT><FONT FACE="Courier">Loading
images...</FONT></TT> is displayed. Figure 5.11 shows the Tarantulas
applet with all the images successfully loaded.
<P>
<A HREF="f5-11.gif" ><B>Figure 5.11 : </B><I>The Tarantulas applet with all the images loaded.</I></A>
<P>
That's all there is to tracking images. Too bad all of Java game
programming isn't this easy-actually, it almost is!
<H2><A NAME="Summary"><B><FONT SIZE=5 COLOR=#FF0000>Summary</FONT></B></A>
</H2>
<P>
Today you were bombarded with a lot of information about the graphics
support in Java. Most of it was centered around the <TT><FONT FACE="Courier">Graphics</FONT></TT>
object, which is fortunately pretty straightforward to use. You
began by learning about color and what it means in the context
of Java. You then moved on to drawing graphics primitives, text,
and images. The lesson concluded with a detailed look at how images
are tracked and managed using the Java media tracker.
<P>
Today marked your first major foray into real Java coding for
games. Even though no game-specific code was developed, you learned
a great deal about the Java graphics system, which is used extensively
in games. If you're still hungry for more, don't worry, because
tomorrow's lesson picks up where you left off and dives into animation.
If you think you learned a lot today, you better brace yourself
for tomorrow!
<H2><A NAME="QA"><B><FONT SIZE=5 COLOR=#FF0000>Q&amp;A</FONT></B></A>
<BR>
</H2>
<P>
<TABLE>
<TR VALIGN=TOP><TD WIDTH=50><B>Q</B></TD><TD><B>If the <TT><B><FONT FACE="Courier">Color</FONT></B></TT> class already contains predefined colors, why does it still have a constructor that accepts the three primary colors?</B>
</TD></TR>
<TR VALIGN=TOP><TD WIDTH=50><B>A</B></TD><TD>Because there might be times when you want to use a color that isn't defined in the <TT><FONT FACE="Courier">Color</FONT></TT> class, in which case you would create a <TT><FONT FACE="Courier">Color</FONT></TT> 
object using the desired levels of red, green, and blue.
</TD></TR>
<TR VALIGN=TOP><TD WIDTH=50><B>Q</B></TD><TD><B>Why are graphics primitives not as important as images in regard to game graphics?</B>
</TD></TR>
<TR VALIGN=TOP><TD WIDTH=50><B>A</B></TD><TD>Because most games take advantage of the high level of realism afforded by images, and therefore rely heavily on images rather than primitive graphics types. However, there are exceptions to this rule; for 
example, vector games are made up entirely of lines, and some 3-D games are made up entirely of polygons.
</TD></TR>
<TR VALIGN=TOP><TD WIDTH=50><B>Q</B></TD><TD><B>When exactly is the <TT><B><FONT FACE="Courier">paint</FONT></B></TT> method called, and why?</B>
</TD></TR>
<TR VALIGN=TOP><TD WIDTH=50><B>A</B></TD><TD>The <TT><FONT FACE="Courier">paint</FONT></TT> method is called any time a portion of a component, such as the applet window, needs to be updated. For example, if a dialog pops up on top of the applet and then 
disappears, the applet needs to be updated, so <TT><FONT FACE="Courier">paint</FONT></TT> is called. You can force a call to <TT><FONT FACE="Courier">paint</FONT></TT> by calling the <TT><FONT FACE="Courier">repaint</FONT></TT> method; you did this very 
thing in the Tarantulas applet to update the status of the loading images.
</TD></TR>
</TABLE>
<P>
<H2><A NAME="Workshop"><B><FONT SIZE=5 COLOR=#FF0000>Workshop</FONT></B></A>
</H2>
<P>
The Workshop section provides questions and exercises to help
you get a better feel for the material you learned today. Try
to answer the questions and at least study the exercises before
moving on to tomorrow's lesson. You'll find the answers to the
questions in appendix A, &quot;Quiz Answers.&quot;
<H3><A NAME="Quiz"><B>Quiz</B></A></H3>
<OL>
<LI>What are the four components of a 32-bit Java color?
<LI>What is a graphics context?
<LI>What class provides information about fonts and enables you
to fine-tune the placement of text?
<LI>What is the purpose of the media tracker?
</OL>
<H3><A NAME="Exercises"><B>Exercises</B></A></H3>
<OL>
<LI>Study the Java Developer's Kit documentation and try out some
of the other graphics primitives not demonstrated in today's lesson.
<LI>Modify the Drawtext applet to draw a different string and
make sure the centering code works correctly.
<LI>Modify the Tarantulas applet to run without the media tracker
and notice the change in behavior.
</OL>
<P>
<HR WIDTH="100%"></P>

<CENTER><P><A HREF="ch4.htm"><IMG SRC="pc.gif" BORDER=0 HEIGHT=88 WIDTH=140></A><A HREF="index.htm"><IMG SRC="hb.gif" BORDER=0 HEIGHT=88 WIDTH=140></A><A HREF="#CONTENTS"><IMG SRC="cc.gif" BORDER=0 HEIGHT=88 WIDTH=140></A><A HREF="ch6.htm"><IMG 
SRC="nc.gif" BORDER=0 HEIGHT=88 WIDTH=140></A></P></CENTER>

<P>
<HR WIDTH="100%"></P>

</BODY>
</HTML>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性猛交xxxxxxxx| 日韩一区精品视频| 亚洲午夜一区二区三区| 亚洲18色成人| 国产精品一卡二| 欧美在线不卡一区| 欧美大片日本大片免费观看| 国产亚洲美州欧州综合国| eeuss鲁一区二区三区| 欧美色爱综合网| 精品国产一区久久| 亚洲人妖av一区二区| 久久精品久久精品| 91首页免费视频| 日韩欧美电影在线| 亚洲摸摸操操av| 精品一区二区三区的国产在线播放 | 亚洲综合在线视频| 激情深爱一区二区| 欧美亚洲日本国产| 国产视频一区在线播放| 亚洲成av人影院| 成人精品一区二区三区四区| 日韩欧美一卡二卡| 亚洲精品国产一区二区精华液| 美美哒免费高清在线观看视频一区二区| 99热国产精品| 久久久久久久久久久久电影 | 精品视频1区2区3区| 国产三区在线成人av| 香蕉久久一区二区不卡无毒影院| 成人免费毛片嘿嘿连载视频| 日韩一区二区在线观看视频播放| 一区二区三区在线免费观看| 国产成人综合精品三级| 91麻豆精品91久久久久久清纯 | 在线观看免费一区| 欧美国产日韩亚洲一区| 免费人成在线不卡| 欧美三级中文字幕在线观看| 国产精品高潮久久久久无| 捆绑紧缚一区二区三区视频| 欧美三电影在线| 成人免费在线视频观看| 国产成人在线看| 日韩一区二区在线看片| 午夜视频在线观看一区| 色婷婷综合久久久久中文一区二区| 国产色产综合产在线视频| 精品一区二区在线视频| 91精品国产欧美一区二区| 亚洲自拍另类综合| 色诱视频网站一区| 亚洲视频每日更新| 波多野结衣在线一区| 久久―日本道色综合久久| 六月丁香婷婷久久| 视频一区二区中文字幕| 欧美日韩一区二区三区不卡| 樱桃国产成人精品视频| 色哟哟一区二区在线观看| 中文字幕一区二区三区乱码在线 | 中文一区一区三区高中清不卡| 精品一区二区日韩| 日韩精品一区二区三区在线| 免费高清不卡av| 欧美一区二区三区啪啪| 日韩有码一区二区三区| 欧美电影一区二区| 日韩激情在线观看| 制服丝袜成人动漫| 麻豆成人av在线| 精品黑人一区二区三区久久| 久草在线在线精品观看| 26uuu成人网一区二区三区| 国产一区二区免费在线| 国产三级三级三级精品8ⅰ区| 国产成人在线视频网址| 中文字幕精品在线不卡| av一区二区三区黑人| 日韩理论片中文av| 色狠狠桃花综合| 亚洲国产精品久久人人爱蜜臀| 欧美日韩视频在线一区二区| 午夜免费欧美电影| 欧美成人在线直播| 丁香婷婷综合色啪| 亚洲美腿欧美偷拍| 欧美日韩一级片在线观看| 午夜精品久久久久久久久| 91精品在线观看入口| 久久 天天综合| 国产精品免费看片| 在线中文字幕一区| 青青草国产成人99久久| 久久久午夜精品理论片中文字幕| 国产91富婆露脸刺激对白| 国产精品第13页| 欧美三级午夜理伦三级中视频| 日韩av在线播放中文字幕| 精品国产99国产精品| 成人avav影音| 午夜欧美2019年伦理| 久久亚洲综合av| 色偷偷成人一区二区三区91| 性感美女极品91精品| 久久一区二区视频| 色偷偷久久人人79超碰人人澡| 日本美女一区二区三区| 中文字幕免费不卡| 欧美精品视频www在线观看| 九色综合狠狠综合久久| 亚洲美女视频在线观看| 日韩一区二区在线观看视频| 不卡视频一二三四| 天天综合网 天天综合色| 久久久久久久性| 欧美日韩一区不卡| 高清免费成人av| 亚洲网友自拍偷拍| 国产欧美日韩麻豆91| 在线不卡a资源高清| 岛国av在线一区| 日韩黄色免费电影| 国产精品久久三区| 日韩一区二区免费在线观看| www.在线成人| 久久国产精品一区二区| 亚洲免费观看在线视频| xvideos.蜜桃一区二区| 欧美日精品一区视频| 高清在线不卡av| 日韩高清在线电影| 综合激情成人伊人| 欧美精品一区二区久久婷婷| 在线观看不卡视频| 成人精品免费网站| 激情综合色播激情啊| 亚洲综合免费观看高清在线观看| 日本一区二区三区四区| 日韩一区二区在线看| 在线影院国内精品| 成人午夜看片网址| 另类小说视频一区二区| 亚洲国产视频在线| 国产精品久久久久久久久快鸭 | 国产麻豆一精品一av一免费| 亚洲国产精品人人做人人爽| 国产精品女同互慰在线看| 日韩欧美精品在线| 欧美日韩中文字幕一区二区| 成人av在线观| 国产成人免费视频精品含羞草妖精| 日韩综合在线视频| 一二三四社区欧美黄| 国产精品午夜久久| 久久久精品日韩欧美| 欧美一级理论性理论a| 欧美探花视频资源| 91丨porny丨户外露出| www.亚洲国产| 国产成人免费在线观看| 国产麻豆成人传媒免费观看| 麻豆精品蜜桃视频网站| 青草国产精品久久久久久| 性久久久久久久久久久久| 亚洲一区二区三区三| 夜夜揉揉日日人人青青一国产精品| 国产精品理伦片| 国产精品天干天干在观线| 欧美—级在线免费片| 国产丝袜在线精品| 国产亚洲女人久久久久毛片| 久久影视一区二区| 久久综合狠狠综合| 精品99一区二区| 精品福利二区三区| 精品久久99ma| 精品电影一区二区三区| 欧美大片免费久久精品三p| 欧美成人精品二区三区99精品| 欧美一区二区三区啪啪| 欧美电影免费观看完整版| 日韩手机在线导航| 日韩精品一区二区三区蜜臀| 日韩欧美一级特黄在线播放| 日韩美一区二区三区| 日韩亚洲国产中文字幕欧美| 日韩一二三区不卡| 精品奇米国产一区二区三区| 精品欧美黑人一区二区三区| 欧美精品一区视频| 国产人伦精品一区二区| 欧美激情一区二区| 国产精品白丝在线| 亚洲精品成a人| 亚洲va韩国va欧美va精品| 日本免费新一区视频| 激情久久五月天| 国产成人av自拍|