Страница 4 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 31 по 40 из 42

Тема: Processing 1.0.9

  1. #31
    Пользователь
    Регистрация
    27.09.2009
    Возраст
    37
    Сообщений
    26
    Вес репутации
    190

    По умолчанию Re: Processing 1.0.9

    PHP код:
    stat0=!stat0
    данное выражение означает присвоить значению stat0 значение !stat0,

  2. #32
    Продвинутый Аватар для Pinin
    Регистрация
    04.01.2009
    Возраст
    59
    Сообщений
    213
    Вес репутации
    230

    По умолчанию Re: Processing 1.0.9

    Т.е. если клик мышью произошел в пределах координат кнопки, то значению stat0 присваивается прямопротивопложное (false меняется на true)?

    Тогда понятно, почему:

    PHP код:
    if (stat0) {port.write('1'); image(dw00); } 
    О как!

    Спасибо! Как бы еще от фиксации избавиться...
    Последний раз редактировалось Pinin; 28.01.2010 в 17:41.

  3. #33
    Пользователь
    Регистрация
    27.09.2009
    Возраст
    37
    Сообщений
    26
    Вес репутации
    190

    По умолчанию Re: Processing 1.0.9

    Цитата Сообщение от Pinin Посмотреть сообщение
    Т.е. если клик мышью произошел в пределах координат кнопки, то значению stat0 присваивается прямопротивопложное (false меняется на true)?
    именно, только не обязательно stat0,
    Цитата Сообщение от Pinin Посмотреть сообщение
    Как бы еще от фиксации избавиться...
    Пробую сделать, но непонятно, почему не работает у меня while...

  4. #34
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Processing 1.0.9

    В Processing цикл while не реагирует на некоторые события
    Я тоже сначала пытался сделать на этом цикле , но все виснет .

    This function can be dangerous because the code inside the while() loop will not finish until the expression inside while() becomes true. It will lock out all other code from running (mouse events will not be updated, etc.) So be careful because this can lock up your code (and sometimes even the Processing environment itself) if used incorrectly.
    Последний раз редактировалось Chip; 28.01.2010 в 18:45.

  5. #35
    Пользователь
    Регистрация
    27.09.2009
    Возраст
    37
    Сообщений
    26
    Вес репутации
    190

    По умолчанию Re: Processing 1.0.9

    Цитата Сообщение от Chip Посмотреть сообщение
    В Processing цикл while не реагирует на некоторые события
    Я тоже сначала пытался сделать на этом цикле , но все виснет .
    ага, я уже измучился с ним...

  6. #36
    Пользователь
    Регистрация
    27.09.2009
    Возраст
    37
    Сообщений
    26
    Вес репутации
    190

    По умолчанию Re: Processing 1.0.9

    проще такие вещи на дельфи делать, возможностей гораздо больше,

  7. #37
    Пользователь
    Регистрация
    27.09.2009
    Возраст
    37
    Сообщений
    26
    Вес репутации
    190

    По умолчанию Re: Processing 1.0.9

    Вот без фиксации.
    все что звязано с ком портом я закоментил, т.к. у меня его нет и с ним прога висла.
    PHP код:
    //import processing.serial.*;   
    //Serial port;  
    int x,y,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,w1,h1,w6,h6,lock;

    PImage bs;     // Все кнопки не нажаты 
    PImage dw;     // Все кнопки не нажаты, нажата "DIM" 
    PImage dw1;    // Все кнопки не нажаты, нажата "MENU" 
    PImage dw2;    // Все кнопки не нажаты, нажата "MUTE" 
    PImage dw3;    // Все кнопки не нажаты, нажата "HW/CITY" 
    PImage dw4;    // Все кнопки не нажаты, нажата "VOL_UP" 
    PImage dw5;    // Все кнопки не нажаты, нажата "VOL_DOWN" 
    PImage dw6;    // Все кнопки не нажаты, нажата "ПИТАНИЕ" 
    PImage bs1
    PImage bs6

    void setup() 

      
    //port = new Serial(this, "COM8", 115200); // Прописываем COM-порт на котором у вас сидит Carduino 
       
      
    size(800600);           //размер окна 
         
      
    bs loadImage("BG.jpg");             //загрузить все кнопки ненажатыми 
      
    dw loadImage("DIM_down.jpg");       //загрузить изображение с нажатой кнопкой "DIM" 
      
    bs1 loadImage("DIM_down.jpg");      //загрузить изображение малой кнопки 
      
    dw1 loadImage("MENU_down.jpg");     //загрузить изображение с нажатой кнопкой "MENU" 
      
    dw2 loadImage("MUTE_down.jpg");     //загрузить изображение с нажатой кнопкой "MUTE" 
      
    dw3 loadImage("HW_down.jpg");       //загрузить изображение с нажатой кнопкой "HW/CITY" 
      
    dw4 loadImage("VOL_UP_down.jpg");   //загрузить изображение с нажатой кнопкой "VOL_UP" 
      
    dw5 loadImage("VOL_DOWN_down.jpg"); //загрузить изображение с нажатой кнопкой "VOL_DOWN" 
      
    bs6 loadImage("DIM_down.jpg");      // загрузить изображение большой кнопки 
      
    dw6 loadImage("7_down.jpg");        //загрузить изображение с нажатой кнопкой "ПИТАНИЕ" 
      
    w1 140;          // Размер малой кнопки по горизонтали 
      
    h1 50;         // Размер  малой кнопки по вертикали 
      
    w6 100;          // Размер большой кнопки по горизонтали 
      
    h6 90;         // Размер большой кнопки по вертикали 
      
    17;      // Х начальная координата кнопки "DIM" 
      
    472;     // y начальная координата кнопки "DIM" 
      
    x1167;     // Х начальная координата кнопки "MENU" 
      
    y1472;     // y начальная координата кнопки "MENU" 
      
    x2321;     // Х начальная координата кнопки "MUTE" 
      
    y2472;     // y начальная координата кнопки "MUTE" 
      
    x3471;     // Х начальная координата кнопки "HW/CITY" 
      
    y3472;     // y начальная координата кнопки "HW/CITY" 
      
    x4170;     // Х начальная координата кнопки "VOL_UP" 
      
    y4395;     // y начальная координата кнопки "VOL_UP" 
      
    x5321;     // Х начальная координата кнопки "VOL_DOWN" 
      
    y5395;     // y начальная координата кнопки "VOL_DOWN" 
      
    x6682;     // Х начальная координата кнопки "ПИТАНИЕ" 
      
    y6435;     // y начальная координата кнопки "ПИТАНИЕ" 
      
    image(bs,0,0);      // Нарисовать в окне  все кнопки ненажатыми 
      



    void draw() 
    {   
       
      if( 
    mousePressed
       { 
        
        
    //image(dw2, 0, 0); // Проверка нажатия в области "DIM" 
         
    if (mousePressed && (mouseX >= && mouseX <= w1 && mouseY >= && mouseY <= h1)) 
         {
         if(
    lock==1){image(dw00);//port.write('3');
         
    }
         
    lock=0;
         }
              
         
    // Проверка нажатия в области "MENU" 
          
    if (mouseX >= x1 && mouseX <= x1 w1 && mouseY >= y1 && mouseY <= y1 h1
         {   
         if(
    lock==1){image(dw100);//port.write('3');
         
    }
         
    lock=0;
         }
         
         
    // Проверка нажатия в области "MUTE" 
         
    if (mouseX >= x2 && mouseX <= x2 w1 && mouseY >= y2 && mouseY <= y2 h1
         {   
         if(
    lock==1){image(dw200);//port.write('5');
         
    }
         
    lock=0;
         }  
         
         
    // Проверка нажатия в области "HW/CITY" 
         
    if (mouseX >= x3 && mouseX <= x3 w1 && mouseY >= y3 && mouseY <= y3 h1
         {   
         if(
    lock==1){image(dw300);//port.write('7');
         
    }
         
    lock=0;   
         }  
         
    // Проверка нажатия в области "VOL_UP" 
         
    if (mouseX >= x4 && mouseX <= x4 w1 && mouseY >= y4 && mouseY <= y4 h1
         {   
         if(
    lock==1){image(dw400);//port.write('9');
         
    }
         
    lock=0;    
         }  
         
    // Проверка нажатия в области "VOL_DOWN" 
         
    if (mouseX >= x5 && mouseX <= x5 w1 && mouseY >= y5 && mouseY <= y5 h1
         {   
         if(
    lock==1){image(dw500);//port.write('A');
         
    }
         
    lock=0;   
         }  
         
    // Проверка нажатия в области "ПИТАНИЕ" 
         
    if (mouseX >= x6 && mouseX <= x6 w6 && mouseY >= y6 && mouseY <= y6 h6
         {   
         if(
    lock==1){image(dw600);//port.write('B');
         
    }
         
    lock=0;    
         }  
            
       }
    if(!
    mousePressed){
    if(
    lock==0){image(bs00);lock=1;//port.write('С');
    }
    }
       


  8. #38
    Продвинутый Аватар для Pinin
    Регистрация
    04.01.2009
    Возраст
    59
    Сообщений
    213
    Вес репутации
    230

    По умолчанию Re: Processing 1.0.9

    2 AlexNS

    Здорово! Я тоже уже башку сломал, пытаясь решить задачу через while (интересно, однако - трое разных людей одним путем было пошли)...

    Кстати, по поводу этого while - а такая шняга только в Processing имеет место быть? При написании второго плеча этого проекта у меня она вроде работает.

    2 Chip

    Собственно, этот топик тоже можно смело приплюсовывать к "Урокам программирования в Processing`е"

    И раз уж пошла такая пьянка - не составит труда уточнить по поводу оптимизации графики (на счет трех файлов).

    Я поначалу пытался было завести отдельно фон, и отдельно кнопки - но там с наложением объектов проблемка случилась (а и не случилась бы - количество графики это не сократило бы все равно).
    Последний раз редактировалось Pinin; 28.01.2010 в 21:37.

  9. #39
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Processing 1.0.9

    Добавил свои 5 коп.
    Задержку 100мс , а то на мощном компе при коротком нажатии кнопка не правдоподобно клацает
    PHP код:
    //import processing.serial.*;    
    //Serial port;   
    int x,y,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,w1,h1,w6,h6,lock

    PImage bs;     // Все кнопки не нажаты  
    PImage dw;     // Все кнопки не нажаты, нажата "DIM"  
    PImage dw1;    // Все кнопки не нажаты, нажата "MENU"  
    PImage dw2;    // Все кнопки не нажаты, нажата "MUTE"  
    PImage dw3;    // Все кнопки не нажаты, нажата "HW/CITY"  
    PImage dw4;    // Все кнопки не нажаты, нажата "VOL_UP"  
    PImage dw5;    // Все кнопки не нажаты, нажата "VOL_DOWN"  
    PImage dw6;    // Все кнопки не нажаты, нажата "ПИТАНИЕ"  
    PImage bs1;  
    PImage bs6;  

    void setup()  
    {  
      
    //port = new Serial(this, "COM8", 115200); // Прописываем COM-порт на котором у вас сидит Carduino  
        
      
    size(800600);           //размер окна  
          
      
    bs loadImage("BG.jpg");             //загрузить все кнопки ненажатыми  
      
    dw loadImage("DIM_down.jpg");       //загрузить изображение с нажатой кнопкой "DIM"  
      
    bs1 loadImage("DIM_down.jpg");      //загрузить изображение малой кнопки  
      
    dw1 loadImage("MENU_down.jpg");     //загрузить изображение с нажатой кнопкой "MENU"  
      
    dw2 loadImage("MUTE_down.jpg");     //загрузить изображение с нажатой кнопкой "MUTE"  
      
    dw3 loadImage("HW_down.jpg");       //загрузить изображение с нажатой кнопкой "HW/CITY"  
      
    dw4 loadImage("VOL_UP_down.jpg");   //загрузить изображение с нажатой кнопкой "VOL_UP"  
      
    dw5 loadImage("VOL_DOWN_down.jpg"); //загрузить изображение с нажатой кнопкой "VOL_DOWN"  
      
    bs6 loadImage("DIM_down.jpg");      // загрузить изображение большой кнопки  
      
    dw6 loadImage("7_down.jpg");        //загрузить изображение с нажатой кнопкой "ПИТАНИЕ"  
      
    w1 140;          // Размер малой кнопки по горизонтали  
      
    h1 50;         // Размер  малой кнопки по вертикали  
      
    w6 100;          // Размер большой кнопки по горизонтали  
      
    h6 90;         // Размер большой кнопки по вертикали  
      
    17;      // Х начальная координата кнопки "DIM"  
      
    472;     // y начальная координата кнопки "DIM"  
      
    x1167;     // Х начальная координата кнопки "MENU"  
      
    y1472;     // y начальная координата кнопки "MENU"  
      
    x2321;     // Х начальная координата кнопки "MUTE"  
      
    y2472;     // y начальная координата кнопки "MUTE"  
      
    x3471;     // Х начальная координата кнопки "HW/CITY"  
      
    y3472;     // y начальная координата кнопки "HW/CITY"  
      
    x4170;     // Х начальная координата кнопки "VOL_UP"  
      
    y4395;     // y начальная координата кнопки "VOL_UP"  
      
    x5321;     // Х начальная координата кнопки "VOL_DOWN"  
      
    y5395;     // y начальная координата кнопки "VOL_DOWN"  
      
    x6682;     // Х начальная координата кнопки "ПИТАНИЕ"  
      
    y6435;     // y начальная координата кнопки "ПИТАНИЕ"  
      
    image(bs,0,0);      // Нарисовать в окне  все кнопки ненажатыми  
      
    }  


    void draw()  
    {    
        
      if( 
    mousePressed)  
       {  
        
    //image(dw2, 0, 0); // Проверка нажатия в области "DIM"  
         
    if (mousePressed && (mouseX >= && mouseX <= w1 && mouseY >= && mouseY <= h1))  
         { 
         if(
    lock==1){image(dw00);//port.write('3'); 
         

         
    lock=0
         } 
               
         
    // Проверка нажатия в области "MENU"  
          
    if (mouseX >= x1 && mouseX <= x1 w1 && mouseY >= y1 && mouseY <= y1 h1)  
         {    
         if(
    lock==1){image(dw100);//port.write('3'); 
         

         
    lock=0
         } 
          
         
    // Проверка нажатия в области "MUTE"  
         
    if (mouseX >= x2 && mouseX <= x2 w1 && mouseY >= y2 && mouseY <= y2 h1)  
         {    
         if(
    lock==1){image(dw200);//port.write('5'); 
         

         
    lock=0
         }   
          
         
    // Проверка нажатия в области "HW/CITY"  
         
    if (mouseX >= x3 && mouseX <= x3 w1 && mouseY >= y3 && mouseY <= y3 h1)  
         {    
         if(
    lock==1){image(dw300);//port.write('7'); 
         

         
    lock=0;    
         }   
         
    // Проверка нажатия в области "VOL_UP"  
         
    if (mouseX >= x4 && mouseX <= x4 w1 && mouseY >= y4 && mouseY <= y4 h1)  
         {    
         if(
    lock==1){image(dw400);//port.write('9'); 
         

         
    lock=0;     
         }   
         
    // Проверка нажатия в области "VOL_DOWN"  
         
    if (mouseX >= x5 && mouseX <= x5 w1 && mouseY >= y5 && mouseY <= y5 h1)  
         {    
         if(
    lock==1){image(dw500);//port.write('A'); 
         

         
    lock=0;    
         }   
         
    // Проверка нажатия в области "ПИТАНИЕ"  
         
    if (mouseX >= x6 && mouseX <= x6 w6 && mouseY >= y6 && mouseY <= y6 h6)  
         {    
         if(
    lock==1){image(dw600);//port.write('B'); 
         

         
    lock=0;     
         }         
       } 
    if(!
    mousePressed){ 
    if(
    lock==0)
    {
      
    image(bs00);
      
    lock=1;//port.write('С'); 
      
    delay(100);

    }     

    Последний раз редактировалось Chip; 28.01.2010 в 22:33.

  10. #40
    Пользователь
    Регистрация
    27.09.2009
    Возраст
    37
    Сообщений
    26
    Вес репутации
    190

    По умолчанию Re: Processing 1.0.9

    Цитата Сообщение от Chip Посмотреть сообщение
    Добавил свои 5 коп.
    Задержку 100мс , а то на мощном компе при коротком нажатии кнопка не правдоподобно клацает

    Кстати, может комуто будет интересно, а может и безразлично,
    Сейчас эта программа реагирует на нажатие любой клавиши мышки, чтобы сделать раздельные нажатия следует заменить код
    PHP код:
    if ( mousePressed )... 
    на код для левой клавиши
    PHP код:
    if ( mousePressed && (mouseButton == LEFT))... 
    либо для правой
    PHP код:
    if ( mousePressed && (mouseButton == RIGHT))... 

Страница 4 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •