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

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>
            小黄鸭视频精品导航| 亚洲午夜电影网| 欧美日韩国产123区| 欧美jjzz| 欧美3dxxxxhd| 欧美日韩精品免费观看视频| 欧美片第一页| 国产精品捆绑调教| 狠狠久久亚洲欧美专区| 亚洲电影毛片| 亚洲男女毛片无遮挡| 欧美一区二区视频免费观看| 久久9热精品视频| 免播放器亚洲一区| 亚洲国产欧美一区二区三区同亚洲| 欧美电影打屁股sp| 一本久道久久综合中文字幕| 亚洲尤物视频网| 麻豆av一区二区三区| 欧美日韩视频一区二区| 国产午夜精品福利| 亚洲精品久久久久| 性色av一区二区三区| 欧美韩国日本综合| 亚洲资源在线观看| 免费看的黄色欧美网站| 国产日本欧洲亚洲| 夜夜嗨av色综合久久久综合网| 欧美一区日本一区韩国一区| 欧美不卡福利| 午夜精品久久99蜜桃的功能介绍| 蜜臀av在线播放一区二区三区| 欧美日韩亚洲一区二区三区| 激情小说另类小说亚洲欧美| 亚洲激情av| 亚洲国产精品视频| 欧美一激情一区二区三区| 欧美精品三级| 在线播放豆国产99亚洲| 性欧美超级视频| 一本色道久久综合狠狠躁篇怎么玩| 久久午夜色播影院免费高清| 国产精品免费看片| 亚洲少妇诱惑| 亚洲精品小视频| 女人香蕉久久**毛片精品| 狠狠色综合色综合网络| 午夜激情一区| 中文精品视频| 欧美日韩一区在线观看视频| 亚洲乱码国产乱码精品精天堂| 狼人社综合社区| 久久九九精品99国产精品| 国产乱码精品一区二区三区忘忧草| 一区二区三区www| 亚洲精品欧美| 久久久久国产精品一区二区| 国产婷婷色一区二区三区四区| 午夜精品久久久久久久久| 在线亚洲观看| 国产精品视频免费观看| 午夜久久黄色| 亚洲午夜视频| 国产欧美一区二区在线观看| 欧美亚洲在线观看| 亚洲欧美伊人| 激情丁香综合| 欧美激情bt| 欧美另类videos死尸| 99视频精品| 亚洲影音先锋| 影音先锋国产精品| 亚洲国产欧美另类丝袜| 欧美日韩不卡| 先锋资源久久| 久久免费观看视频| 亚洲乱码久久| 亚洲在线电影| 一区久久精品| 夜夜嗨一区二区三区| 国产欧美一区二区精品忘忧草| 久久精品亚洲乱码伦伦中文| 欧美在线观看网站| 亚洲日韩第九十九页| 99香蕉国产精品偷在线观看| 国产午夜精品理论片a级大结局 | 亚洲国产视频a| 亚洲日韩中文字幕在线播放| 欧美视频你懂的| 欧美亚洲一区二区三区| 久久伊人一区二区| 日韩视频一区二区在线观看| 亚洲无玛一区| 一区二区视频免费完整版观看| 蜜臀av在线播放一区二区三区| 欧美精品一卡二卡| 性久久久久久久久| 久久久综合视频| 在线亚洲一区二区| 久久久91精品| 亚洲欧美第一页| 免费在线国产精品| 亚洲自拍啪啪| 男人的天堂亚洲在线| 亚洲欧美日韩一区在线| 久久亚洲欧美| 久久精品一区二区国产| 欧美极品色图| 欧美激情中文字幕乱码免费| 国产精品免费观看在线| 亚洲国产精品视频| 国内精品国语自产拍在线观看| 亚洲精品久久| 亚洲国产专区校园欧美| 欧美一级艳片视频免费观看| 一区二区三区四区精品| 久久视频国产精品免费视频在线| 亚洲专区一区| 欧美日韩国产欧美日美国产精品| 久久综合一区二区| 国产欧美一区二区三区在线老狼| 日韩视频一区| 99pao成人国产永久免费视频| 欧美中文日韩| 久久精品成人欧美大片古装| 欧美视频在线观看免费网址| 亚洲福利视频专区| 在线观看91久久久久久| 午夜精品影院| 欧美专区福利在线| 国产伦精品一区二区三区在线观看| 99精品视频免费全部在线| 99国产精品视频免费观看一公开| 美国十次成人| 亚洲承认在线| 亚洲精品乱码久久久久久久久| 久久亚洲综合网| 欧美国产亚洲另类动漫| 亚洲第一精品影视| 欧美大片免费观看在线观看网站推荐| 欧美国产先锋| 99在线观看免费视频精品观看| 欧美激情1区2区| 亚洲麻豆国产自偷在线| 亚洲视频碰碰| 国产精品一二一区| 午夜老司机精品| 欧美成人在线免费视频| 91久久国产综合久久91精品网站| 免费观看欧美在线视频的网站| 欧美福利视频一区| 99国产欧美久久久精品| 欧美色区777第一页| 亚洲一区中文| 麻豆av一区二区三区久久| 亚洲精品国产精品乱码不99按摩| 欧美成人激情在线| 日韩小视频在线观看专区| 欧美在线观看一区二区| 久久电影一区| 亚洲精品在线电影| 国产精品高潮呻吟| 欧美一区二区在线播放| 欧美成人亚洲成人| 99国产精品久久久久久久| 国产精品免费网站| 久久久久久久久岛国免费| 91久久久在线| 篠田优中文在线播放第一区| 国产一区二区成人| 欧美激情影音先锋| 欧美一级片在线播放| 亚洲国产欧美一区二区三区久久| 亚洲欧美国产一区二区三区| 在线观看欧美一区| 国产精品乱码妇女bbbb| 久久亚洲精品网站| 一本久道久久综合中文字幕| 久久―日本道色综合久久| aa国产精品| 一区二区三区我不卡| 国产精品yjizz| 免费av成人在线| 小黄鸭精品aⅴ导航网站入口| 欧美韩日一区| 久久综合伊人| 久久aⅴ国产欧美74aaa| 中日韩美女免费视频网址在线观看| 国内外成人在线视频| 国产精品美女一区二区在线观看| 欧美激情精品久久久久| 久久成人免费| 中文国产成人精品久久一| 亚洲高清在线| 久久亚洲私人国产精品va| 亚洲伊人观看| 一本大道久久精品懂色aⅴ| 一区二区三区在线观看欧美| 国产精品video| 欧美日韩第一区|