青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿

一般來說 原型方法主要使用于快速生成和已存在對象基本一致的對象。
一般典型的例子是細胞分裂和孫悟空變換出N的小猴子
不過我這里舉一個在GUI設(shè)計過程的例子

假如一個面板上的同質(zhì)按鈕,他們僅文本不同,代表的邏輯不同,其他信息是完全一致的,比如皮膚,邊框,大小等
按照一般方法可能會這樣構(gòu)造面板
Button* btn1 = new Button();
btn1
->SetSize(..);
btn1
->SetBorder(..);
btn1
->SetListener(..);
btn1
->SetVisible(true);
btn1
->SetParent(panel);
btn1
->SetColor()
Button
* btn2 =..
當(dāng)然還有其他按鈕:)
 
是不是很煩?
借助原型模式
可以大大的簡化!
比如:
Button *btn1 = new Button(panel);
Button 
*btn2= btn1->Clone();
Button 
*btn3= btn1->Clone();
Button 
*btn4= btn1->Clone();
然后只要設(shè)置各個按鈕對應(yīng)的文本即可
為了使用原型方法我們需要做的僅僅是
給對象增加Clone接口和其實現(xiàn)即可
比如:
class AbstractWidget
{
public:
     virtual AbstractWidget
* Clone() = 0
     
};

需要說明的是原型一般使用的是淺拷貝
posted @ 2011-05-06 22:22 ccsdu2009 閱讀(1466) | 評論 (0)編輯 收藏
 

 今天晚上試著在個人電腦上搭建了Android就說說具體的步驟吧
1.首先下載eclipse包。地址:http://download.actuatechina.com/eclipse/technology/epp/downloads/release/helios/SR2/eclipse-java-helios-SR2-win32.zip
2.解壓,點擊eclipse.exe 出現(xiàn)錯誤提示沒有安裝java包
3.下載java包。地址:http://download.oracle.com/otn-pub/java/jdk/6u25-b06/jdk-6u25-windows-i586.exe
4.點擊安裝。完成后啟動eclipse
5.點擊菜單Help->install new software 增加新的repository,名字隨便起個
地址為:https://dl-ssl.google.com/android/eclipse/
安裝ADT
6.安裝完成后restart eclipse會發(fā)現(xiàn)window菜單多了一欄:Android SDK and AVD Manager
7.下載 Android sdk 地址為:http://dl.google.com/android/android-sdk_r08-windows.zip
8.解壓,點擊其中的SDK Manager.exe 下載其他關(guān)鍵包
9.點擊eclipse window perfercences 中的android設(shè)置android sdk路徑
成功后下面的列表框會出現(xiàn)安裝信息比如:Target name,Vendor 和 Paltform API
10.點擊Apply
11.最后還需要設(shè)置模擬器 具體為打開Android SDK and AVD Manager 點擊左側(cè)的Virtual Devices
然后點擊右側(cè)的New按鍵  按照要求填入信息即可
12.現(xiàn)在就可以編寫Android程序并在模擬器上跑了
不過模擬器啟動很慢 一般都是在真機上做測試

posted @ 2011-05-06 22:06 ccsdu2009 閱讀(1670) | 評論 (0)編輯 收藏
 

早在2008年底我就想做一套完整的GUI庫,搞笑的是當(dāng)時我以為游戲中的所有控件都是

使用win32做的。看了Opengl游戲編程附帶的代碼,才搞清楚了不是這個樣子的滴(感覺當(dāng)時很膚淺哈哈)

之后我就打算自己開發(fā)一個玩玩,盡管我很努力,但是水平太菜,做不出來(不過我有一個特點就是說干就干,這點很贊)

大致到了2009年年底,技術(shù)積累達到了一定的高度,也查看了很多的gui庫,基本上能夠做出來成型的GUI了(至于能不能用,這是一個問題)

去年中期,才拿出了一個成套的GUI,雖然不是特別好,但是基本能用,另外對GUI各塊機理也有了很好的認識(比如字體渲染,控件架構(gòu),對象序列化,事件處理等)

但是這塊有幾個問題:
1。對象序列化是基于模板的,這塊有益處也有弊端
2。只能支持控件換膚,不能支持完備的控件序列化
3。.做出來的控件太丑了-不具有漂亮的臉蛋

現(xiàn)在決定做一個獨立,開源,完備,漂亮,方便,易用,容擴展的一個GUI
說他獨立:是考慮把這個做成一個類似于個人做的音頻引擎,不依賴于游戲引擎
說他開源:這個好解釋
說他漂亮:就是做出來的界面一定要美觀,否則就是一坨屎
說他易用:是指容易使用,包括支持控件資源皮膚資源等
說他易擴展:是指其由若干模塊構(gòu)成,容易增加新的接口,不依賴于具體渲染API和平臺
當(dāng)然編輯器也應(yīng)該有的

在開發(fā)過程中將詳細講解GUI開發(fā)中遇到的各類問題,包括所有控件,接口,事件處理,對象布局,設(shè)計的設(shè)計模式等細節(jié)

同時盡可能得附上代碼
如果感覺寫的不對請隨時指正

另外:今年看了大量的QT和Android例子,吸收了不少養(yǎng)分
關(guān)于開發(fā)時間:慢慢來吧,興趣所致,走走看吧

之前開發(fā)的引擎不打算再做了,涉及面太大,精力太少
在可預(yù)見的時間內(nèi),我想繼續(xù)維護音頻API,GUI庫和另外一個軟件
posted @ 2011-05-05 22:52 ccsdu2009 閱讀(2170) | 評論 (5)編輯 收藏
 
接上文:設(shè)計模式-簡單工廠 http://m.shnenglu.com/gaimor/archive/2011/05/02/145498.html
簡單工廠是根據(jù)傳入要求決定生產(chǎn)那類產(chǎn)品,其工廠只有一個
在簡單工廠基礎(chǔ)之上,如果一個工廠對應(yīng)一個產(chǎn)品則形成了工廠方法
interface Product
{
    
public void Call();
};

public class Product1 implements Product
{
    
public void Call()
    {}
};

public class Product2 implements Product
{
    
public void Call()
    {}
};

interface ProductFactory
{
    
public Product GetProduct();
};

public class ProductFactory1 implements ProductFactory
{
    
public Product GetProduct()
    {
        
return new Product1();
    }
}

public class ProductFactory2 implements ProductFactory
{
    
public Product GetProduct()
    {
        
return new Product2();
    }
}

這樣使用
ProductFactory factory1 
= new ProductFactory1();

Product p1 
= factory1.GetProduct();
ProductFactory factory2 
= new ProductFactory2();

Product p2 
= factory2.GetProduct();


可以看出工廠方法中工廠和產(chǎn)品總是一一對應(yīng)的
一個工廠只能生產(chǎn)一個產(chǎn)品
很顯然工廠方法最大的弊端就在這里.

使用的場合:一個對象希望由子對象來指定它所創(chuàng)建的對象時,可以使用工廠方法

PS:系統(tǒng)那個總結(jié)下設(shè)計模式
posted @ 2011-05-05 22:27 ccsdu2009 閱讀(1690) | 評論 (0)編輯 收藏
 
這段時間在學(xué)習(xí)Android,也要學(xué)點jav方面的編程知識
乘著這個機會,俺就總結(jié)下學(xué)過和使用過的設(shè)計模式,并使用java寫下

先說簡單工廠
簡單工廠屬于工廠模式的一種,不過似乎不在GOF模式之列.
一句話描述:簡單工廠就是根據(jù)給定要求生成給定對象
簡單的java版本代碼如下:
public interface Product
{
    
abstract public void Call();
};

public Pen implements Product
{
    
public void Call()
    {
        
    }
};

public Book implements Product
{
    
public void Call()
    {
        
    }
};


public clas Factory
{
    
public Product CreateProducrt(String name)
    {
        
if(name.equals("Pen"))
            
return Pen.class.newInstance();
        
else if(name.equals("Book"))
            
return Book.class.newInstance();
        
return null;
    }
};




簡單工廠就是根據(jù)輸入標(biāo)簽返回給定的對象實例

很顯然,簡單工廠的主要缺陷就在于:如果需要增加一個新的產(chǎn)品那就需要修改其產(chǎn)品生成函數(shù)

另外,如果把工廠和產(chǎn)品對象合二為一就變成了如下的形式:
public class Object
{
    
public static ObjectCreateObject(String name);
    other function. 
};
這類似于MFC中CObject

簡單工廠的一個使用例子如下(之前我寫的GUI):
class WidgetFactory
{
public:
    Widget
* CreateWidgetByName(const std::string& name);      
};
在這里如果傳入Spin則返回一個new Spin,傳入一個Slider則返回一個new Slider對象
如果我增加一個新的Widget對象,則需要把CreateWidgetByName函數(shù)修改下(當(dāng)然可以使用Object::CreateObject(name)函數(shù),只是返回的對象需要做類型轉(zhuǎn)換,原則一致)

下篇說說抽象工廠和工廠方法吧
posted @ 2011-05-02 16:57 ccsdu2009 閱讀(1800) | 評論 (0)編輯 收藏
 

之前在博客園見到過別人發(fā)的關(guān)于Android的帖子,當(dāng)時只記得是關(guān)于手機開發(fā)的。
沒想到現(xiàn)在灑家也要學(xué)這個了。

不過還好經(jīng)過1周多的學(xué)習(xí),感覺Android還是很簡單的。

Android的基本概念
1.Activity
2,Intent
3.Content Privoder
4.BroadCast Revicer.
5..
posted @ 2011-04-30 23:00 ccsdu2009| 編輯 收藏
 
接上文.
Tremolo音效比較酷的音效,聽上去感覺是使用電子樂器演示的。
從感官上將Tremolo(顫音)音效是重擊一個音符然后快速提高,減小音量

下面是顫音音效的幾個參數(shù):
1.深度控制:用來控制音量增減速度
2.閾值數(shù)據(jù):說明控制音量的頻率值
3.波形

其基本數(shù)學(xué)表達式為:
data = data * (1.0 + depth * sin(k* rate * index));

簡易的c++代碼如下:

class Tremolo : public AudioEffect
{
public:
    
static double def_depth;
    
static double def_rate;
    
double depth;
    
double rate;
    
double k;
    Tremole();
    std::vector
<float> Filter(const std::vector<float>& _data)
    {   
        data 
= _data;
        
for(int i = 0; i < data.size();i++)
           data[i] 
*= (1.0 + depth * sin(2.0 * PI * rate * i / k);
        
return data;   
    }    
};
當(dāng)然有java版本的化應(yīng)該是如下這個樣子:
public class Tremolo extends AudioEffect
{
    
private static double final def_depth = ;
    
private static double final def_rate = ;
    
private double depth = def_depth;
    
private double rate = def_rate;
    Tremolo()
    {
       
    }
    
    
double[] Filter(double[] _data)
    {
        
int len = _data.length;
        
double[] ret = new double[len];
        
for(int i = 0;i<len;i++)
            ret[i] 
= _data[i]*(1+depth*Math.Sin(2*Math.PI*rate*i/k));
        
return ret;        
    }
}    
基本的源碼就這個樣子
不過有一個問題就是播放音效有少許雜音-不過不是大問題
posted @ 2011-04-26 22:42 ccsdu2009 閱讀(1637) | 評論 (0)編輯 收藏
 

之前做的音頻API都是使用的第三方的庫或者代碼
不過這段時間一直比較忙
沒什么時間來玩玩音頻引擎了

不過為了不至于本博客長草
我就整理下以前接觸過的音頻處理這塊吧

首先上一個簡單的音效基類吧

class AudioEffect
{
public:
   
virtual ~AudioEffect(){}
   
virtual std::vector<float> Filter(const std::vector<float>& data) = 0;
protected:
   std::vector
<float> data;    
};

通過調(diào)用Filter就可以獲取給定pcm處理后的音效數(shù)據(jù)

然后再談下什么是Distortion音效
Distortion主要使用于電吉他等電子類樂器,

Distortion音效主要有以下參數(shù):
1.edge 臨界值
2.gain 增益
3.低通剪切值(當(dāng)然還有其他幾個參數(shù),...)

其簡易化的音效處理原則就是
使用使用給定臨界值對原有數(shù)據(jù)做Clamp處理

簡單的例子如下:
#define DISTORTION_RATE 100.0
#define DISTORTION_THRESHOLD 0.4

class Distortion : public AudioEffect
{
public
    Distortion()
    {
        gain 
= DISTORTION_RATE;
        value 
= DISTORTION_THRESHOLD;
    }
    std::vector
<float> Filter(const std::vector<float>& data_)
    {
       
this->data.clear();
       
for(int i = 0; i < data_.size(); i++)
       {
           
float v = data_[i]*gain;
           
if(v > value)
               v 
= value;
           
if(v < - value)
               v 
= -value;
           data.push_back(v);  
       }
       reutrn data;
    }
private:
    
float gain;
    
float value;
};

看上去似乎很簡單

那處理后的音效如何? 試試就知道了

接下來還有reverb,ring,echo,chorus等音效算法和音頻傅里葉變換等
等弄完了這些,音頻引擎也就該升級了(我早已構(gòu)思好了下個版本的音頻API功能了)

下篇tremolo音效
posted @ 2011-04-25 22:48 ccsdu2009 閱讀(1718) | 評論 (0)編輯 收藏
 

import android.media.AudioManager;
獲取
AudioManager audiomanage = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
音量增大和減小(一個單位)
audiomanager.adjustVolum(AudioManager.ADJUST_LOWER,0);
audiomanager.adjustVolum(AudioManager.ADJUST_RAISE,
0);



posted @ 2011-04-22 21:02 ccsdu2009| 編輯 收藏
 
Styles是QT自帶的例子 - 主要展示的是QT程序界面風(fēng)格方面的編程知識
1.程序調(diào)色板的獲取
使用QApplication中的靜態(tài)函數(shù)
QApplication::palette
palette有2個版本一個是給定的調(diào)色板,另外一個給定的調(diào)色板
對應(yīng)的調(diào)用QApplication::setPalette就可以設(shè)置新的程序調(diào)色板
如果使用自定義的Palette就可以達到修改界面色調(diào)的目的
比如:
2.
QStyleFactory對象
The QStyleFactory class creates QStyle objects.
可以通過靜態(tài)函數(shù)QStyleFactory::key()獲取工廠所支持的風(fēng)格名字列表(注意是列表,返回類型是QStringList)
當(dāng)然可以通過函數(shù)cerate來生成新的風(fēng)格指針
3.
QComboBox 組合框
主要函數(shù)有以下幾個:
通過函數(shù)
addItem增加新項
通過addItems增加新項列表
通過插槽綁定就可以傳遞響應(yīng)了:
connect(combobox,SIGNAL(activated(QString)),this, SLOT(changeComBox(QString)));
其他三個可能會用到的函數(shù)

currentIndex,count, currentText

4.QT計時器
拿例子說下:
QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), 
this, SLOT(advanceProgressBar()));
    timer
->start(1000);
首先構(gòu)造一個計時器 然后綁定計時器對象和槽函數(shù)
之后啟用計時器-每隔1秒鐘調(diào)用advaceProressBar函數(shù)
如果想停止計時器則調(diào)用stop函數(shù)即可
5.QProgressBar進度條對象
基本的函數(shù)就那些
設(shè)置方向,當(dāng)前值,最大值最小值,文本,可見性等等
progressBar = new QProgressBar;
progressBar
->setRange(010000);
progressBar
->setValue(0);
其槽函數(shù)為

valueChanged ( int value )

6.單選按鈕QRodioButton
例子如下
    topLeftGroupBox = new QGroupBox(tr("Group 1"));
    radioButton1 
= new QRadioButton(tr("Radio button 1"));
    radioButton2 
= new QRadioButton(topLeftGroupBox);
    radioButton2
->setText(tr("Radio button 2"));
    radioButton3 
= new QRadioButton(tr("Radio button 3"));
    radioButton1
->setChecked(true);
    layout
->addWidget(radioButton1);
    layout
->addWidget(radioButton2);
    layout
->addWidget(radioButton3);
似乎沒什么可說的
7.
QTableWidget控件
The QTableWidget class provides an item-based table view with a default model.
需要說明的是如果要使用自定義類型,則需要使用QTableView而非QTableWidget.
tableWidget = new QTableWidget(this);
     tableWidget
->setRowCount(10);
     tableWidget
->setColumnCount(5);
不過感覺以后不會使用這個對象
8.QLineText
QT的單行輸入控件
具體函數(shù)有(似乎不需要說功能了)
QString text() const;
QString displayText() 
const;
int maxLength() const;
void setMaxLength(int);
bool isReadOnly() const;
void setReadOnly(bool);
bool isModified() const;
void setModified(bool);
9.
Q_INIT_RESOURCE(styles);
加載資源文件
styles.qrc

posted @ 2011-03-20 12:19 ccsdu2009| 編輯 收藏
僅列出標(biāo)題
共38頁: First 19 20 21 22 23 24 25 26 27 Last 
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99精品欧美| 国产日韩欧美91| aa级大片欧美| 一区二区精品国产| 中文av一区二区| 午夜精品久久久久久久久久久久| 一区二区三区导航| 亚洲欧美中文在线视频| 欧美一区二区三区免费视| 久久精品成人一区二区三区| 老牛国产精品一区的观看方式| 欧美黑人国产人伦爽爽爽| 国产精品成人一区| 曰韩精品一区二区| 99精品国产福利在线观看免费| 亚洲一区日韩在线| 久久精品视频在线看| 欧美国产三区| 亚洲少妇中出一区| 久久三级福利| 国产精品欧美久久| 亚洲成在人线av| 亚洲综合色自拍一区| 玖玖玖免费嫩草在线影院一区| 亚洲人成网站777色婷婷| 亚洲乱码视频| 久久gogo国模啪啪人体图| 欧美成va人片在线观看| 欧美视频网站| 亚洲精品日韩综合观看成人91| 亚洲欧美日韩综合aⅴ视频| 你懂的视频一区二区| 在线亚洲电影| 免费在线观看日韩欧美| 国产精品久久久久久影院8一贰佰| 国内精品久久久久久久影视蜜臀| 日韩视频中午一区| 久久视频这里只有精品| 亚洲精品免费在线播放| 久久久精品999| 国产精品国产精品国产专区不蜜| 影音先锋亚洲一区| 欧美在线播放一区二区| 亚洲免费av片| 久久亚洲综合色| 黄色亚洲免费| 欧美一区二区三区在线看| 日韩图片一区| 欧美福利专区| 亚洲成人在线免费| 久久精品91久久久久久再现| 日韩视频免费观看| 欧美激情精品久久久久| 伊人激情综合| 欧美华人在线视频| 欧美有码视频| 欧美日韩综合| 日韩视频一区二区三区在线播放| 久久精品国产综合| 一区二区高清视频| 欧美日韩在线直播| 亚洲最新在线| 日韩视频专区| 欧美视频在线观看视频极品 | 免费观看不卡av| 亚洲综合久久久久| 国产精品久久久久一区二区三区共 | 亚洲国产精品成人va在线观看| 欧美一区二区三区四区高清| 国产精品久久久久久久久久免费看| 99re亚洲国产精品| 亚洲人成亚洲人成在线观看| 欧美精品一区二区三| 亚洲精品国久久99热| 亚洲国产日韩一区| 欧美肥婆在线| 一区二区不卡在线视频 午夜欧美不卡' | 欧美美女视频| 一区二区冒白浆视频| 亚洲日本aⅴ片在线观看香蕉| 欧美激情一区二区三区全黄| 日韩视频一区二区在线观看| 亚洲精选成人| av72成人在线| 国产精品一区二区三区乱码| 欧美在线观看天堂一区二区三区| 亚洲私人影院在线观看| 国产精品人人爽人人做我的可爱| 欧美影院一区| 久久色在线观看| 亚洲精品影视在线观看| 亚洲黄色免费| 国产精品美女在线观看| 久久综合一区二区三区| 久久综合色婷婷| 在线视频欧美精品| 亚洲欧美日韩一区二区在线 | 99国产精品99久久久久久| 欧美日韩综合网| 久久久噜噜噜久噜久久| 欧美jizzhd精品欧美巨大免费| 一本一本久久a久久精品综合麻豆| 亚洲一区不卡| 亚洲一区二区三区免费视频| 久久高清国产| 一区二区激情视频| 亚洲免费中文| 最新国产の精品合集bt伙计| 亚洲性色视频| 亚洲精品乱码久久久久久久久| 日韩亚洲综合在线| 国产欧美一区二区白浆黑人| 欧美成人视屏| 国产伦精品一区二区三区在线观看 | 亚洲一区二区三区四区视频| 激情久久婷婷| 中文精品一区二区三区| 亚洲第一中文字幕在线观看| 亚洲午夜激情| 亚洲三级电影在线观看| 亚洲在线日韩| 亚洲视频精品| 欧美激情视频网站| 欧美风情在线观看| 国产视频自拍一区| 亚洲视频在线看| 亚洲精品日韩激情在线电影| 欧美一级午夜免费电影| 一区二区高清视频在线观看| 久久久噜噜噜久久人人看| 亚洲欧美日本视频在线观看| 欧美大尺度在线观看| 国产精品天天看| 一区二区免费在线观看| 亚洲精品国产精品国自产观看浪潮 | 久久天天综合| 欧美自拍丝袜亚洲| 国产精品久久久久久久久久久久久久| 欧美mv日韩mv亚洲| 国产自产v一区二区三区c| 亚洲欧美福利一区二区| 午夜精品久久久99热福利| 欧美视频手机在线| 一区二区三区四区蜜桃| 在线视频欧美精品| 欧美日韩一区二区在线观看 | 午夜亚洲福利| 欧美午夜www高清视频| 亚洲精品在线观看免费| 日韩亚洲国产精品| 欧美日韩成人综合| 在线视频亚洲| 久久精品最新地址| 羞羞色国产精品| 久久久久亚洲综合| 国产精品视频精品| 久久久久久黄| 亚洲一区在线播放| 亚洲综合首页| 国产精品一区二区三区久久久| 一本色道久久综合亚洲精品不卡| 一本久久综合| 国产精品美女www爽爽爽| 香蕉乱码成人久久天堂爱免费| 亚洲欧美综合v| 国产午夜精品视频| 久久美女性网| 久久在线免费观看视频| 欧美一区成人| 在线观看视频日韩| 欧美激情一区二区三区蜜桃视频| 亚洲免费观看高清完整版在线观看熊 | 狠狠入ady亚洲精品| 久久五月天婷婷| 亚洲看片免费| 亚洲欧美三级伦理| 国内精品国语自产拍在线观看| 久久九九热re6这里有精品| 免费成人小视频| 一片黄亚洲嫩模| 海角社区69精品视频| 久久久久亚洲综合| 99视频精品全部免费在线| 久久av红桃一区二区小说| 伊人久久大香线蕉综合热线| 欧美日韩亚洲成人| 欧美一级成年大片在线观看| 亚洲第一网站| 亚洲欧美日韩中文视频| 亚洲黄色av一区| 国产亚洲网站| 欧美三区免费完整视频在线观看| 久久精品视频在线观看| 国产精品99久久久久久久女警| 欧美福利视频在线观看| 午夜日韩在线| 亚洲一区三区电影在线观看| 亚洲人体一区| 在线观看欧美一区| 国产日韩精品电影|