Saturday, December 4, 2010

浅谈J2me游戏如何快速移植到Android


--------转帖
前言

小白:老大,你让做的三个J2me游戏搞定了,请看DEMO
老大:恩,不错,小白,你知道Android这个平台吧?
小白:恩,听过。听说和J2ME有很多共同点。
老大:(一阵奸笑)很多共同点是吧?
小白:恩。
老大:那好,你把这几个J2ME游戏给我移植到Android上去。
小白:“……”

很多J2ME开发者可能都会遇到这样的临时性需求。其实J2ME程序往Android移植,并不是特别麻烦。
经过一番认真学习,小白开始整理起了笔记……

   高级UI界面

       J2ME的高级用户界面比较鸡肋,在现在大多数的应用里都看不到,多数稍微复杂点的界面都是手工画,或是用一些开源的高级UI库,但Android则不同,它的UI实用、方便,而且很美观,基本无需改动且定制方便。

一 设备差异

       虽说普通的手机性能越来越高,屏幕也越来越大,但平均而言,运行J2ME的手机从性能和屏幕分辨率及附属功能来说不及Android手机。拿入门的HTC G1来说,CPU528MHz,屏幕为3.17英寸触摸屏、HVGA 480×320像素,192MB RAM256MB ROM。所以从J2ME移植到Android的程序可以暂时不考虑性能问题。
       但要充分发挥Android手机的特点。要注意一下几点:
比如应用UI的布局可以更加自由,输入更加灵活,网络应用注意发挥3GWIFI的速度优势。
游戏要注意可适当的用效率换效果,可增加动画、音效、背景音乐的质量,图片元素的大小,发挥高分辨率手机的优势,强大的运算能力可以让开发人员编写基于OpenGL3D游戏,可以用一些吃CPU但效果不错的开发包,如Box2D仿真物理引擎开发包。
可以结合GPS定位、重力感应、话筒、指南针、触笔的压力感应等等让游戏的效果更加逼真。

  J2MEAndroid系统的常用类、方法对比

J2MEAndroid系统的常用类、方法对比

J2ME系统
Android系统
入口程序
MIDlet
Activity
图片类
Image
Image.createImage(path);
BitMap
BitmapFactory.decodeResource(getResources(),R.drawable.map0);
画笔
Graphics
Canvas
绘画
Displayable
View
按键
keyPressed()
keyRepeated()
keyReleased()
onKeyDown()
onKeyUp()
onTracKballEvent()
触笔
pointerPressed(),
pointerReleased(),
pointerDragged()
onTouchEvent()
打印信息
System.out.printlt()
Log
生命周期-开始
startApp(),活动状态,启动时调用,初始化。
onCreate(),返回时也会调用此方法。
onCreate()后调用onStart()
onStart()后调用onResume()
生命周期-暂停
PauseApp(),暂停状态,如来电时,调用该接口。
onPause()
生命周期-销毁
destroyApp(),销毁状态,退出时调用。
onStop(),程序不可见时调用onDestroy(),程序销毁时调用
刷新
高级UI组件由内部刷新实现。
低级UI,canvas中通过调用线程结合repaint()来刷新,让线程不断循环
高级UIHandler类通过消息的机制刷新
onDraw()刷新接口
低级UI开发者用线程控制更新,在lockCanvas()unlockCanvasAndPost()方法之间绘制
数据存储
Record Management System (RMS)
SQLite数据库
SharedPreferences
可绘区域
int clipX = g.getClipX(); 
int clipY = g.getClipY(); 
int clipW = g.getClipWidth(); 
int clipH = g.getClipHeight(); 
g.clipRect(x, y, width, height); 
g.setClip(clipX, clipY, clipW, clipH);
canvas.save();
canvas.clipRect(x,y,x+width, y+height); 
cavnas.resave();
游戏中清屏
paint.setStyle(Style.FILL);
canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);
canvas.drawColor(Color.BLACK);
游戏开发包
javax.microedition.lcdui.game
GameCanvas
Layer
LayerManager
Sprite
TiledLayer
无专门针对游戏的开发包,可以直接拿来主义,将J2ME的开发包稍作修改
音效
Player s =Manager.createPlayer(InputStream);
s.prepare(); //创建
s.start();//播放
s.stop();//暂停
s.stop();//关闭
s.release();//释放  
MediaPlayer类处理背景音乐
SoundPool类处理一些简单的音效
全屏
CanvasSetFullScreenMode()
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
获得屏幕尺寸
Canvas类的getHeight()getWidth()
Display d = getWindowManager().getDefaultDisplay();
 screenWidth = d.getWidth();
 screenHeight = d.getHeight();
双缓冲
Image bufImage=Image.createImage(bufWidth, bufHeight);
Graphics bufGraphics=bufImage.getGraphics();
Bitmap carBuffer = Bitmap.createBitmap(bufWidth, bufHeight, Bitmap.Config.ARGB_4444); 
Canvas carGp = new Canvas(carBuffer);





      
   开始移植

       小白找到Android中对应的J2ME相关的替代类和替代方法后,开始噼里啪啦的改代码了。没过多久,首个俄罗斯方块算是移植成功。当他开始移植下一款游戏时,发现又要重复的改那些代码……
       “可不可以减少代码的改动呢?小白问自己。可否用Android的相关代码构造一些和J2me里功能类似的代码呢?

       原则:尽量少改动J2ME项目的代码。用Android中对应的类改写成J2ME中的方法和类,减少以后移植的工作量,甚至实现无缝移植。

       “或许我可以构造一个名为MIDlet实为Activity的类,这样J2me中的入口类就不用改动了
Activity类改装的MIDlet类:
public abstract class MIDlet extends Activity { 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
startApp(); 
public abstract void destroyApp(boolean unconditional); 
public String getAppProperty(String key) { 
return null; 
public abstract void startApp(); 
public void notifyDestroyed() { 
public void notifyPaused() {} 
public void pauseApp() {} 
public void platformRequest(String URL) {} 
public void resumeRequest() {} 

MIDlet类我们解决了,接下来就是非常重要的Canvas类了
J2me里的Canvas类相当于Android体系中的SurfaceView类,都是负责绘制显示界面的,游戏的大循环一半也在这两个类里实现,也就是都会实现Runnable类,更新逻辑和更新界面都在此类的大循环中处理。

Graphics类在J2me里负责绘图和排版样式等。
我们可以用Android里的Canvas类和Paint类共同组合一个Android里的Graphics类,如Graphics类的构造函数可这样定义:
public Graphics(Bitmap bitmap) {    
    this.bitmap = bitmap;    
    this.canvas = new Canvas(bitmap);    
    this.canvas.clipRect(0, 0, bitmap.getWidth(), bitmap.getHeight());    
    this.canvas.save(Canvas.CLIP_SAVE_FLAG);    
    this.paint = new Paint();    
    this.clip = canvas.getClipBounds();    
Graphics里可以设置居中方式,在Android体系里我们用Paint类来实现相同的效果,例如:
public void setAlign(int align)    
    {    
        if(LEFT == align    
                ||(Graphics.LEFT | Graphics.TOP) == align    
                ||(Graphics.LEFT | Graphics.BOTTOM) == align)    
        {    
            paint.setTextAlign(Align.LEFT);     
        }else if(HCENTER == align    
                ||(Graphics.HCENTER|Graphics.TOP) == align)    
        {    
            paint.setTextAlign(Align.CENTER);     
        }else if(RIGHT == align    
                ||(Graphics.RIGHT | Graphics.TOP) == align)    
        {    
            paint.setTextAlign(Align.RIGHT);    
        }    
}   

所有的绘制方法也同样沿用J2me中的方法名,用Android体系的代码完成方法体,达到无缝移植。以绘制、填充矩形为例:
public void fillArc(int x,int y,int width,int height, int startAngle,int arcAngle) {    
paint.setStyle(Style.FILL);    
    canvas.drawArc(new RectF(x,y,width,height), startAngle, arcAngle, true, paint);    
}       
public void drawArc(int x,int y,int width,int height, int startAngle,int arcAngle)  {    
    paint.setStyle(Style.STROKE);    
    canvas.drawArc(new RectF(x,y,width,height), startAngle, arcAngle, true, paint);    
}  

再来说说按键处理:
大体思路就是获取Android中的按键消息后,修改封装一下,转换成J2me的键值和事件,然后传递给显示层。

先定义出J2me中的键值:
public class GameCanvas extends Screen {    
    public static final int UP = 1;    
    public static final int DOWN = 6;    
    public static final int LEFT = 2;    
    public static final int RIGHT = 5;    
    public static final int FIRE = 8;    
        
    public static final int GAME_A = 9;    
    public static final int GAME_B = 10;    
    public static final int GAME_C = 11;    
    public static final int GAME_D = 12;    
        
    public static final int KEY_NUM0 = 48;    
    public static final int KEY_NUM1 = 49;    
    public static final int KEY_NUM2 = 50;    
    public static final int KEY_NUM3 = 51;    
    public static final int KEY_NUM4 = 52;    
    public static final int KEY_NUM5 = 53;    
    public static final int KEY_NUM6 = 54;    
    public static final int KEY_NUM7 = 55;    
    public static final int KEY_NUM8 = 56;    
    public static final int KEY_NUM9 = 57;    
    public static final int KEY_STAR = 42;    
    public static final int KEY_POUND = 35;    
}  
经过中间一个转换方法:
       public int keyCode4J2me = 0;
       public int keyAction4J2me = 0;
       public void changeToJ2meKey(int keyCode, KeyEvent e) {
              if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
                     keyCode4J2me = GameCanvas.DOWN;
                     keyAction4J2me = GameCanvas.DOWN;
              } else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
                     keyCode4J2me = GameCanvas.LEFT;
                     keyAction4J2me = GameCanvas.LEFT;
              } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
                     keyCode4J2me = GameCanvas.RIGHT;
                     keyAction4J2me = GameCanvas.RIGHT;
              } else if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
                     keyCode4J2me = GameCanvas.FIRE;
                     keyAction4J2me = GameCanvas.FIRE;
              } else if (keyCode == KeyEvent.KEYCODE_0) {
                     keyCode4J2me = GameCanvas.KEY_NUM0;
              } else if (keyCode == KeyEvent.KEYCODE_1) {
                     keyCode4J2me = GameCanvas.KEY_NUM1;
              } else if (keyCode == KeyEvent.KEYCODE_2) {
                     keyCode4J2me = GameCanvas.KEY_NUM2;
              }
       }

转换成J2me的按键处理体系,转去调用J2me原生的keyReleased方法:
public boolean onKeyUp(int keyCode, KeyEvent e) {    
    changeToJ2meKey (keyCode,e);    
    keyReleased(keyActual);    
    return true;    

其他的字体类、颜色类、等等都可以按此方法无缝移植。
Font字体类用Android中的FontMetrics重写。
Graphics类中的setColor(int rgb)以及setColor(int r,int g,int b)方法,则可以修改Graphics类中Paint的颜色。如:
public void setColor(int r,int g,int b) {     
    int argb = (0xff000000)+(r<<16)+(g<<8)+b;    
    paint.setColor(argb);    

       小白心想:或许我还可以用Android中的Canvas类改写一个J2me中的Graphics类,用Android中的Bitmap改装一个J2me中的Image……然后把J2me游戏开发包javax.microedition.lcdui.game包里的GameCanvas类,Layer类,LayerManager类,Sprite类,TiledLayer类直接拿来用。嗯嗯,几乎不用改动原来的J2me代码了。第一个移植任务花费了一个周,以后一天就能移植一个小游戏啦。哈哈哈。
      
      
   后记

       小白:老大,游戏移植好了,请验收一下吧。
       老大:…………动作很快嘛,我看看代码,恩……代码封装的不错,一会来我办公室,谈谈你转正的事。
       小白:多谢老大。
       老大:普通的程序员会熟练的使用轮子,优秀的程序员要学会自己造轮子!
       小白:恩,我记住了。

Sunday, November 28, 2010

What is BossaNova

“Bossa”这个字源自于巴西里约热内卢的俚语,它指的是不受拘束的精明聪慧、和才华特出之类的意思。再加上葡萄牙文的Nova,取其 “新”的意义。所以,Bossa Nova就可以直接解释为无拘无束且极富创意的新音乐。它属于Latin Jazz,即融合巴西流行音乐风格(Samba)的爵士乐。是曼波(Mambo)音乐与冷爵士融合的结果,同时也吸取了一些桑巴(Samba)音乐的特点。它的音响效果不喧闹,给人的感觉像是呢喃细语。它的旋律性不 强,而是强调和声、节奏、旋律的整体效果。可是在一些爵士乐历史介绍中,Bossa Nova往往被忽略了。因为 Bossa Nova并非是纯正的美国纽奥良Jazz,而是所谓的“舶来品”。其实这是很不公平的,Bossa Nova自50年代末期在巴西兴起,并成为50、60年代巴西新流行音乐的代名词。1959年法国拍了一部电影,《黑人奥非尔(BLACK ORPHEUS) 》,夺得当年奥斯卡最佳外语片奖。片中浓厚的Bossa Nova配乐,引发一些美国爵士乐手对巴西音乐的好奇与探索。次中音萨克斯风手STAN GATZ因此特地远赴巴西里约热内卢,找 ANTONIO CAROLS JOBIM合作专辑。GATZ邀请JOBIM跟JOAO GILBERD夫妇一起到美国录制《The Girl From Ipnema》,JOAO自弹自唱了葡萄牙文版而英文版就由JOAO的太太ASTURD GILBERD演唱。配上 GATZ超棒的萨克斯风演奏,果然掀起一阵BOSSA NOVA热浪。跟传统南美及拉丁音乐不一样的是Bossa Nova不像森巴或伦巴舞曲一样节奏强烈且煽情,以巧妙的省略音符加上切分音效果,结合拉丁节奏的动感,结构上和美国西岸酷派爵士乐风格有相似,因此它有 着南美音乐的热情风味却多了慵懒及轻松,宛如千面女郎,有清晨的清新,午后的慵懒,夜晚的深情及子夜的忧郁 ……Bossa Nova就是何时听都很棒的音乐!

Saturday, November 20, 2010

A big present from China

This morning , I received a big surprise from my dear friend. All the snacks I used to eat in Beijing.HaHa.I love my friend.

Tuesday, November 16, 2010

Eat Pray Love

  I first heard it in the last episode of Big Bang.Then I found it on Wiki.It is about One Woman's Search for Everything Across Italy, India and Indonesia.It is a memoir of the American Author Elizabeth Gilbert.Also,it has been filmed on this Augest 31,acted by Julia Roberts.I like the tailer and maybe I will read the book first.

Eat, Pray, Love

Saturday, November 6, 2010

Fireflies for penny and sheldon

 I love this piece of video
http://www.youtube.com/watch?v=gcSlotYqa_Y&feature=fvw

Saturday, October 30, 2010

Queen B is starring in the upcoming country music film--Country Strong

Gossip Girl’s Leighton Meester trades Gucci for Guitars

October 26th, 2010

The one and only Blair Waldorf is leaving her Jimmy Cho’s in the Upper East Side and packing her cowboy boots for Nashville. Gossip Girl’s resident Queen B, Leighton Meester, is starring in the upcoming country music film, Country Strong.
Fans will get to hear Leighton’s voice in a much different genre than we’re used to. You might remember Leighton’s hugely successful collaboration with Cobra Starship on their dance/pop hit, Good Girls Gone Bad. In Country Strong, Leighton plays an aspiring country singer that is touring with a legend in the industry, played by Gwenyth Paltrow. The track listing for the film was released today and below you can hear one of Leighton’s songs from the film, the beautiful Words I Couldn’t Say.
What do you think? Do we have another Taylor on the horizon?!

Sunday, October 24, 2010

谈一谈咖啡

首先说最基本的
brew coffee
通常都有两种,mild & bold, 就是两种不同口味的咖啡。


Mild 一般是Pike place roast,不会改变。几年前代替house blend,成为starbucks 的mild blend。咖啡都产自南美,带有一定的acidity (不是说它像醋一样,酸,而是直很干净)。Quote "The lively, paleate-cleansing property characteristic of washed coffees grown at a high altitude"。是一个很白搭的咖啡。

————————————————————————————————————————————————————
BOLD PICK OF THE DAY


通常每个星期,或者每两个星期会改变。通常会在味觉上比较浓烈。不过跟Mild比,咖啡因含量一样。

————————————————————————————————————————————————————
Caffe Misto


Brewed coffee and steamed milk.
Equal parts rich-brewed coffee and frothy steamed milk, this beverage is well-loved in many parts of the world and goes by many names. While Italians call it caffè misto, in France, it’s known as café au lait, and in Spain, café con leche. Whatever you call it, it’s a delightfully smooth and milky drink, perfect for sitting, sipping and contemplating the day.
基本上跟latte是很相似的。不同的地方是,caffe misto 其中一般是你选的 brew coffee (mild / bold),令一半是牛奶(如果没有特殊要求是2%牛奶,Starbucks 有non-fat/ skim milk, lactose free milk & soy milk 要特殊要求)。这里的牛奶是用打奶器打热的,温度在160F左右。 同样,你可以特殊要求温度。Kid temperature = 135F ~, extra hot = 170~ F, 或者你跟他说,你要的温度,只要在200F以下,一般都可以做到。

有一点要说,Brew coffee里面没有糖和奶,你需要自己加~~
任何bar drink 没有要求 (如果配方里没有)也不会有糖,不过可以另外要求巴台的人加。所有的要求请在点饮品的时候说清楚。后面再要求很麻烦。

——————————————————————————————————————————————————
Iced coffee with Milk


Hot weather certainly calls for a cool treat. And we can hardly think of anything more refreshing than this delicious blend of chilled coffee with milk. With its delightful balance of fresh citrus flavors and rich caramel notes, this icy beverage is a sure thing on a summer’s day.

一般用的是非洲产的咖啡豆。因为它有独特的citrus 和 caramel,很适合做冰咖啡。note: 不是所有咖啡豆都可以冲成冰咖啡的。还有冰咖啡不是一年四季都有的,只有在夏天才有。

就是冰咖啡 +冰+糖浆(其实就是白糖冲水)+奶。shake and pour
可以要求不同的奶,不同甜度,和多冰/少冰。

Espresso Beverage

Espresso Beverage,看字上就是说,含有espresso的饮料

note:espresso beverage中的咖啡因含量并没有brew coffee多,只不过起效来得猛些,快些。

当然,就是有 espresso了


Smooth and versatile Espresso Roast is the very heart and soul of Starbucks. Its rich flavor, lingering aroma and caramelly sweetness make it the perfect foundation for lattes, cappuccinos and all our espresso-based beverages. But you can also enjoy it all by itself – indeed, that might be the best way to discover its nuances.

翻译来好像是叫做浓缩咖啡?
这是个很讲究的饮品。以我的看法,如果你会点,会品espresso,至少算一半懂得喝咖啡得人了。

先 说点,按照几个shot来点(有点像order liquor) ,一个shot=1ounce 叫 solo espresso, 两个 =2 ounce 叫doppio 好像是意大利语的double,三个就是 triple,四个 quadruple, 五个 pentaple?哈哈,我也没听过,4以后就直接跟他说 5,6,7⋯⋯ shots espresso 就好。

note: espresso 冲出来最好在10秒中之内喝了,不然会变的很苦,很难下咽。如果你喝过新鲜的espresso才能体会到,所说的浓厚的,带有caramelly 焦糖般的甜味的。

————————————————————————————————————————————————————
最简单的变异就是 espresso macchiato


Sometimes a touch is just enough. And so it is with the slight dab of foam we set atop our signature espresso in this classic European-style beverage. Anything more than a hint and you risk obscuring the rich, caramelly flavor that gives a simple espresso its wonderful intensity. And that’s the last thing we’d want when preparing your perfect shot.

macchiato means stained, 被染色的。这里指牛奶的泡被espresso染色了。
牛奶泡上浇上新鲜冲出的espresso。比单一的espresso好下肚,因为有牛奶泡泡的陪伴,变的香甜很多。

————————————————————————————————————————————————————
再就是espresso Con Panna is Italian for “espresso with cream.”



This is the perfect introduction to espresso for those who are unsure they’re ready for the full-throttle intensity of a straight-up shot. The delicate dollop of whipped cream softens the rich and caramelly espresso flavors so exquisitely, you may choose to forego adding sugar altogether. Welcome to the club, espresso lover.

就是espresso shot 订上加了whipping cream。给你双重的刺激,咖啡因+sugar rush。

——————————————————————————————————————————————————
接着就是咱们都知道的latte
还记得那个歌词 “想用一杯latte 把你灌醉” 那个latte 就是这里说的 latte了


This is the original coffeehouse classic. And like most classics, part of its appeal comes from its simplicity. A caffè latte is simply a shot or two of bold, tasty espresso with fresh, sweet steamed milk over it. Some prefer to add syrup or extra espresso to the recipe. Some maintain that it is entirely perfect as is.

不用担心,其实很多白人,鬼老也不懂啥的,就知道latte的。在白人中,latte也是最经典的,最简单的espresso drink。做法就是,espresso +打热的牛奶+大概 1inch 的牛奶泡 (可以说不要=no foam

然 后就是不同味道的latte,一半starbucks所谓的 flavored latte, 就是在里面加了带味道的糖浆,所以flavored latte 都有糖分了。有不同的味道, 香草,榛子,太妃/toffee nut, 薄荷/peppermint,糖肉桂/cinnamon dalce (发音为dal‘ chai),焦糖/caramel, 和 raspberry(一半没人要,除非加mocha里)

——————————————————————————————————————————————————
说到latte,就不得不说cappuccino


With less milk than a latte, cappuccino offers a stronger espresso flavor and a luxurious texture. To make it properly requires much skill and attentiveness. Arguably the most important part is frothing the foam to velvety perfection as the milk steams – something our baristas take great care to achieve. The milky moustache that clings to your upper lip is proof we’ve made yours right. And may we say, you wear it well.

在 味道上,和latte很相似,都是espresso+牛奶。可是口感上大大不同。cappucino用的奶少很多,它只用大概一半的牛奶,另外一半是奶泡 /foam。是比较要求barista 技术的,如果奶打的不好,很难做出一杯smooth的cappuccino。不过很多人不喜欢奶泡,所以大多数人还是喜欢latte。不过我却中爱 foam。甚至要求 bone dry cappuccino (only foam + espresso,没有牛奶)
note:cappuccino 通常 milk 和 foam 是一半一半,如果要求多奶 就是wet cappuccino,多foam 就是dry cappuccino,我说的bone dry 就是格外少奶只有foam的意思。

————————————————————————————————————————————————————

再之 Caramel macchiato

Scores of people are passionate devotees of this signature beverage. So bewitched are they, you’d think it was some kind of magical elixir. Well there’s no hocus pocus here. We’ll tell you exactly what goes into it: creamy vanilla-flavored syrup, freshly steamed milk with a topping of velvety-rich foam, an intense hit of our Espresso Roast, a finishing of buttery caramel drizzle … okay, we take it back. That does sounds like magic to us. (And it tastes even better.)

叫 “焦糖码其朵”?? 好像是
对了那个 macchiate 读音为 (ma ki ya to) 很像马起鸭头。我的大爱之一。
做 法/味道和 vanilla latte 差不多,只不过更胜一级而已。这里要注意的是顺序,先香草糖浆+打热的牛奶+1inch的奶泡 +espresso 浇上去+Starbucks专利的格格图案(这个图案真的是patented by starbucks的哦)。 Hmm⋯⋯ 上面的 caramel drizzle 真的是超级棒的。有浓浓的香味,和牛奶,很融和。再加上espresso中的caramelly taste。反正就是很well balanced。 如果没有喝过,一定要试的!!


————————————————————————————————————————————————————
下面来mocha,不是抹茶啊,是摩卡?



There’s no question chocolate and coffee are flavors that meant for each other. Both are rich and full of depth. Where one is creamy, the other is roasty. They complement each other perfectly. And when they come together under a fluffy cloud of sweetened whipped cream, you’ll wish their union would last forever.

也是latte的升级版,里面加了starbucks的mocha syrup,含有很多种不同的可可豆,provide the depth。 一般的mocha 上面都带有 whipping cream,不过因为很肥(33% fat),所以体贴的barista一般都会问你要不要 whipping cream 的。这个饮品已经是带糖分了。如果你觉得太甜可以order 1/2 sweet, 1/3 sweet or whatever,(applicable to all syrup drinks) 放心barista都会很耐心的解释给你,不用觉得自己不懂尴尬。因为有很多人都不懂啊。


mocha 的变异,一般就是
peppermint mocha (mocha + peppermint syrup),
raspberry mocha (mocha + raspberry),
White chocolate mocha (白巧克力,其实是另外一种syrup,根本不是什么巧克力了)
和 marble mocha ( 1/2 mocha + 1/2 white chocolate mocha)

-----------------------------------------------------------
Americano, 也是一款很经典,很简单的espresso drink



In Europe, coffee is essentially espresso – which, in America, isn’t very much coffee. To create a caffè americano – a coffee that satisfies the American preference for more sips in every cup – Europeans simply add hot water to their espresso. While the americano is similar in strength and taste to American-style brewed coffee, there are subtle differences achieved by pulling a fresh shot of espresso for the beverage base. The best way to discover these nuances, of course, is to try a cup yourself.
                                                                                                       
据说,在欧洲,所谓的咖啡就是指的espresso,不是我们这种america 冲出来的咖啡。这就产生了 Americano, 在口感和味觉上和普通的咖啡最为相似,不过还是略胜一筹(不得不说,欧洲人真的很会享受,比美国人强多了)。
Americano, 读音就是 american +no。新鲜的espresso shot,diluted with filtered hot water。虽然听上去没有那么大的吸引力,可是因为espresso 豆特殊的烘焙,有着一般咖啡豆没有的 complexity and caramel taste。喝下去,在味觉上是多重的,复杂的,比brew coffee有depth。
喝发跟一般的brew coffee一样,按照自己的感觉,加糖/奶都好。

是brew coffee的很好的一个升级版。如果钱包不允许fancy drinks,americano 一定是我的第一选择。

好了。热的espresso drink就差不多这些。

note:以上除了 espresso / espresso macchiato /espresso con panna 之外,其他的都有冰饮品的选择。order的时候只需要在前面加上 iced, eg iced tall latte=小杯冰latte

Thursday, October 14, 2010

Making sense of the coming styles

 I just read it in today's metro that there are 3 top trends in next years' spring and summer:
1)Long,diaphanous skirts and dresses
2)Bold,pops of colour
3)Sheer,transparent separates and dresses
I also got this on
http://www.fashionising.com/trends/b--spring-2011-fashion-trends-spring-summer-2011-4073.html 
just share it.


Spring 2011 clothing trends: Key Looks

maxi dress

Biker clothing

As of spring 2011 the military fashion trend will have been with us for over a decade. And for that decade it's been great, we've loved it, but 10 years later we have to admit: spring 2011 is the time to move on. The question is: what do we move on to? The answer: the trend that's been living in its shadow, waiting for its moment of glory. And for spring / summer 2011 it's going to get just that because here comes the biker trend.
spring 2011 dress

Maxi dress goes sheer

Every season trends evolve, and every season two trends merge. In that regards, spring 2011 will be no different from what has come before it. What will be different, however, is the season's take on a staple for many women's summer wardrobe: the maxi dress. In spring 2011 it'll merge with another trend favourite to give us the sheer maxi dress trend.
lace dresses and skirts

Lace clothing

No, it's not new. But, like all trends that span multiple seasons, it has evolved. Lace influences for Spring 2010 are more to the classic side with quality antique-style fabrics the key to the trend. Less of the allover, stretch lace and more of the unique takes. Click to read more about the lace dress trend.
60s ladylike

60s ladylike

The silhouettes of the 1950s and 1960s make a strong return, with shapes that accentuate curves and foster femininity. A hip-hugging sheath dress with a below-the-knee hem is the ultimate in hourglass dressing, while the full circle skirt and dress remain at the core of the trend. For Spring 2010 introduce fresh colours, prints and light summery fabrics. Click to read about the '60s dress trend.
cateye glasses

Cat eye sunglasses

With the warmer weather comes the need to update your sunglasses collection with a new and on-trend style. For Spring 2011 the best accompaniment to a vintage-inspired look is a shape that screams '50s/'60s glamour. From the very subtle to the extreme, click to read about the cat eye glasses trend.
'70s glamour

'70s glamour

Just as the '50s and '60s are back, so too are particular elements of the '70s. There are two main aesthetics: '70s bohemian, and '70s sophisticated glamour. When it comes to the latter, think dresses that fall like shimmering water in the evening and high-waist pants with elegant blouses by day. Click to read about the sophisticated '70s trend.
tassels

Tassels

Sometimes a little detail is all it takes to change the feel of a garment. In Spring 2011 one of the most popular trimmings is one that signifies luxury or, at times, the exotic. Adorning everything from handbags to shoes to dresses and hats - click to read about the tassel trend.
clogs

Clogs

Clunky wooden shoes. It doesn't sound like the most glamorous or practical of footwear trends, and yet the clog reached new heights in 2010 and will continue into 2011. Heeled versions are by far the best, with a preference for Swedish styles. For Spring experiment with lighter fabrics like canvas or linen, as well as open-toed styles. Click to read about the clogs fashion trend.
kitten heels

Kitten heels

Kitten heels are making a somewhat controversial return, spurred on by the trend of '50s and '60s dressing. More comfortable yet less appealing than their higher counterparts, kitten heels can work particularly well when dainty, pointed, and either retro-inspired or minimalist. When it comes to this style in 2011 it's all about the theming. For Spring, kitten heeled sandals are also an option. Click to read about the kitten heels shoe trend.