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

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

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

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

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

 今天晚上試著在個人電腦上搭建了Android就說說具體的步驟吧
1.首先下載eclipse包。地址:http://download.actuatechina.com/eclipse/technology/epp/downloads/release/helios/SR2/eclipse-java-helios-SR2-win32.zip
2.解壓,點擊eclipse.exe 出現錯誤提示沒有安裝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會發現window菜單多了一欄:Android SDK and AVD Manager
7.下載 Android sdk 地址為:http://dl.google.com/android/android-sdk_r08-windows.zip
8.解壓,點擊其中的SDK Manager.exe 下載其他關鍵包
9.點擊eclipse window perfercences 中的android設置android sdk路徑
成功后下面的列表框會出現安裝信息比如:Target name,Vendor 和 Paltform API
10.點擊Apply
11.最后還需要設置模擬器 具體為打開Android SDK and AVD Manager 點擊左側的Virtual Devices
然后點擊右側的New按鍵  按照要求填入信息即可
12.現在就可以編寫Android程序并在模擬器上跑了
不過模擬器啟動很慢 一般都是在真機上做測試

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

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

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

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

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

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

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

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

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

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

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

之前開發的引擎不打算再做了,涉及面太大,精力太少
在可預見的時間內,我想繼續維護音頻API,GUI庫和另外一個軟件
posted @ 2011-05-05 22:52 ccsdu2009 閱讀(2171) | 評論 (5)編輯 收藏
 
接上文:設計模式-簡單工廠 http://www.shnenglu.com/gaimor/archive/2011/05/02/145498.html
簡單工廠是根據傳入要求決定生產那類產品,其工廠只有一個
在簡單工廠基礎之上,如果一個工廠對應一個產品則形成了工廠方法
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();


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

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

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

先說簡單工廠
簡單工廠屬于工廠模式的一種,不過似乎不在GOF模式之列.
一句話描述:簡單工廠就是根據給定要求生成給定對象
簡單的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;
    }
};




簡單工廠就是根據輸入標簽返回給定的對象實例

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

另外,如果把工廠和產品對象合二為一就變成了如下的形式:
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函數修改下(當然可以使用Object::CreateObject(name)函數,只是返回的對象需要做類型轉換,原則一致)

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

之前在博客園見到過別人發的關于Android的帖子,當時只記得是關于手機開發的。
沒想到現在灑家也要學這個了。

不過還好經過1周多的學習,感覺Android還是很簡單的。

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

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

其基本數學表達式為:
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;   
    }    
};
當然有java版本的化應該是如下這個樣子:
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 閱讀(1638) | 評論 (0)編輯 收藏
 

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

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

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

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

通過調用Filter就可以獲取給定pcm處理后的音效數據

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

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

其簡易化的音效處理原則就是
使用使用給定臨界值對原有數據做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等音效算法和音頻傅里葉變換等
等弄完了這些,音頻引擎也就該升級了(我早已構思好了下個版本的音頻API功能了)

下篇tremolo音效
posted @ 2011-04-25 22:48 ccsdu2009 閱讀(1719) | 評論 (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程序界面風格方面的編程知識
1.程序調色板的獲取
使用QApplication中的靜態函數
QApplication::palette
palette有2個版本一個是給定的調色板,另外一個給定的調色板
對應的調用QApplication::setPalette就可以設置新的程序調色板
如果使用自定義的Palette就可以達到修改界面色調的目的
比如:
2.
QStyleFactory對象
The QStyleFactory class creates QStyle objects.
可以通過靜態函數QStyleFactory::key()獲取工廠所支持的風格名字列表(注意是列表,返回類型是QStringList)
當然可以通過函數cerate來生成新的風格指針
3.
QComboBox 組合框
主要函數有以下幾個:
通過函數
addItem增加新項
通過addItems增加新項列表
通過插槽綁定就可以傳遞響應了:
connect(combobox,SIGNAL(activated(QString)),this, SLOT(changeComBox(QString)));
其他三個可能會用到的函數

currentIndex,count, currentText

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

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的單行輸入控件
具體函數有(似乎不需要說功能了)
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| 編輯 收藏
僅列出標題
共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>
            免费观看成人| 免费成人黄色av| 久久国产黑丝| 欧美国产日韩视频| 欧美在线网址| 欧美高清视频| 激情综合在线| 久久九九国产精品| 9色国产精品| 久久亚洲欧美| 激情视频一区| 欧美激情在线狂野欧美精品| 国产精品嫩草影院av蜜臀| 国产精品三级视频| 国产美女扒开尿口久久久| 亚洲一区二区三区色| 亚洲另类在线视频| 欧美人与性动交a欧美精品| 亚洲精品一级| 亚洲第一成人在线| 久久国产精品99国产精| 欧美中在线观看| 欧美一级午夜免费电影| 欧美国产成人精品| 欧美综合国产精品久久丁香| 国产一区二区欧美| 久久久综合网站| 葵司免费一区二区三区四区五区| 伊人精品久久久久7777| 美女主播一区| 欧美日韩国产探花| 午夜精品久久久久久久久| 亚洲一区久久久| 狠狠色丁香久久婷婷综合丁香| 看片网站欧美日韩| 欧美激情1区2区3区| 亚洲私人影吧| 欧美在线视频观看免费网站| 亚洲国产日韩精品| 亚洲免费高清视频| 国产伦精品一区二区三区视频黑人| 鲁鲁狠狠狠7777一区二区| 欧美精品一区二| 欧美国产精品久久| 国产模特精品视频久久久久| 亚洲精品中文字幕在线| 18成人免费观看视频| 亚洲欧美日韩国产综合在线| 久久先锋资源| 欧美色中文字幕| 亚洲黄色天堂| 国产精品久久久久久久久久久久久久| 亚洲一区欧美一区| 欧美一区二区三区视频免费播放| 在线观看视频免费一区二区三区| 亚洲国产视频直播| 国产欧美日韩视频一区二区| 欧美电影在线观看| 国产精品亚洲美女av网站| 模特精品在线| 国产精品久久久久一区二区| 蜜乳av另类精品一区二区| 欧美极品色图| 欧美日韩在线视频观看| 中文在线一区| 亚洲黄色大片| 亚洲欧美中日韩| 亚洲乱码国产乱码精品精天堂 | 亚洲毛片在线观看| 狠狠久久亚洲欧美| 在线综合亚洲| 亚洲三级色网| 久久精品成人一区二区三区| 亚洲一级免费视频| 欧美成人免费网站| 美女啪啪无遮挡免费久久网站| 国产精品www网站| 亚洲日本一区二区| 在线观看欧美日韩| 亚洲欧美影音先锋| 老司机精品久久| 亚洲欧美日本另类| 欧美日韩成人免费| 91久久国产精品91久久性色| 一区精品久久| 久久国产日韩| 久久久久久九九九九| 国产精品热久久久久夜色精品三区 | 久久综合久久88| 久久久99精品免费观看不卡| 欧美性片在线观看| 一本色道久久88亚洲综合88| 亚洲人成在线播放| 美腿丝袜亚洲色图| 亚洲国产合集| 亚洲激情在线| 久久精品成人一区二区三区蜜臀| 亚洲视频在线二区| 欧美精品一区二区久久婷婷| 亚洲第一中文字幕| 亚洲成色精品| 嫩草国产精品入口| 免费观看日韩av| 亚洲国产婷婷香蕉久久久久久99| 久久久久久久精| 欧美sm视频| 亚洲国产一二三| 欧美绝品在线观看成人午夜影视| 欧美黄色日本| 夜夜精品视频一区二区| 91久久精品www人人做人人爽| 亚洲欧洲综合另类在线| 欧美xx视频| 亚洲精品在线观看免费| 99re成人精品视频| 国产精品www| 欧美在线综合| 欧美国产日韩一区二区三区| 亚洲日本免费电影| 欧美日韩在线综合| 亚洲欧美日韩一区二区| 久久久久www| 亚洲欧洲日产国产综合网| 欧美久久在线| 香蕉精品999视频一区二区| 久久裸体视频| 日韩午夜在线| 国产目拍亚洲精品99久久精品| 欧美在线三区| 亚洲韩国一区二区三区| 久久亚洲图片| 亚洲美女在线看| 久久婷婷av| 一区二区电影免费观看| 国产午夜精品一区二区三区欧美 | 国产欧美日韩一区二区三区在线观看 | 亚洲人成免费| 欧美一级在线播放| 曰本成人黄色| 国产精品久久久一区二区三区| 欧美在线三级| 亚洲人体偷拍| 久久精品视频99| 日韩图片一区| 影音先锋成人资源站| 欧美日韩中文字幕在线视频| 欧美在线日韩在线| 亚洲视频精品在线| 欧美成人xxx| 欧美一区综合| 亚洲视频图片小说| 99成人免费视频| 欧美成人精品1314www| 国产精品卡一卡二卡三| 亚洲精品视频在线观看网站| 欧美不卡高清| 欧美激情精品久久久六区热门| 亚洲第一精品电影| 久热re这里精品视频在线6| 夜夜嗨av一区二区三区四区| 国产日韩精品入口| 欧美精品性视频| 久久久国产精彩视频美女艺术照福利| 一本色道久久综合狠狠躁篇的优点 | 久久亚洲欧洲| 午夜视频在线观看一区二区三区| 亚洲激情一区二区三区| 嫩草国产精品入口| 久久久久久久97| 欧美日韩一区二| 亚洲精品日韩激情在线电影| 国产精品欧美在线| 午夜精品久久久久久久久 | 久久精品视频va| 在线成人小视频| 国产精品久久久久久妇女6080 | 亚洲国产一区二区三区a毛片| 欧美一二三区精品| 国产精品99久久久久久久女警| 亚洲成人自拍视频| 亚洲电影第三页| 亚洲国产精品一区二区第一页 | 美国三级日本三级久久99| 亚洲欧美怡红院| 国产无一区二区| 亚洲乱码日产精品bd| 亚洲美女视频网| 牛牛精品成人免费视频| 欧美夜福利tv在线| 亚洲精品视频二区| 久久激情视频| 欧美亚洲在线视频| 日韩视频在线免费| 久久福利视频导航| 亚洲国产精品一区二区三区| 免费一级欧美片在线播放| 亚洲国产精品高清久久久| 亚洲成人在线视频网站| 国产亚洲精品bv在线观看| 中文av字幕一区|