+ Ответить в теме
Показано с 1 по 7 из 7
  1. #1
    Аватар для gignorie gignorie Очень опасный тип Любопытный
    Сообщений
    44
    Поблагодарили 1 раз в 1 сообщении

    Очень забавный класс Animate

    Здравствуйте дорогие форумчани! У меня возник маленький вопрос, а именно работать с классом animate, то есть базовые функции я знаю. Блин, короче есть такая функция setView она отвечает за перемещение "камеры" за объектом в Devel Studio( по словам Devel'a ). Так вот я посмотрел почему у меня не выходит работать с этой функцией, и понял что у Devel'a тоже всё плохо с математикой как и у меня, ну я решился починить эту функцию то есть не её, а её родителя(toView) если можно так сказать. У меня вышло, но не совсем, перемещение камеры глучила когда объект менял своё положение(

    Прошу вас о помощи по скольку я ещё в 5 классе забил на математику)

    Вот мои наработки:
    PHP код:
    <?


    class animate {
        
        static function 
    toSpeed(){
            
            
    $vspeed =& $GLOBALS['__VSPEED'];
            if (
    count($vspeed))
            foreach (
    $vspeed as $self=>$speed){
                if (
    link_null($self)){
                   
    // pre($self);
                    
    unset($vspeed[$self]);
                    continue;
                }
                
    control_y($selfcontrol_y($selfnull) + $speed);
            }
            
            
    $hspeed =& $GLOBALS['__HSPEED'];
            if (
    count($hspeed))
            foreach (
    $hspeed as $self=>$speed){
                if (
    link_null($self)){
                    unset(
    $hspeed[$self]);
                    continue;
                }
                
    control_x($selfcontrol_x($selfnull) + $speed);
            }
            
            
    // collisions
            
    $coll =& $GLOBALS['__COLLISION'];
            if (
    $coll)
            foreach (
    $coll as $self=>$arr){
                
                if (
    link_null($self)){
                    unset(
    $coll[$self]);
                    continue;
                }
                
                
    $arr1['x'] = control_x($selfnull);
                
    $arr1['y'] = control_y($selfnull);
                
    $arr1['w'] = control_w($selfnull);
                
    $arr1['h'] = control_h($selfnull);
                foreach (
    $arr as $toobj=>$event){
                    
                    if (
    link_null($toobj)){
                        unset(
    $coll[$self][$toobj]);
                        continue;
                    }
                    
                    
    $arr2['x'] = control_x($toobjnull);
                    
    $arr2['y'] = control_y($toobjnull);
                    
    $arr2['w'] = control_w($toobjnull);
                    
    $arr2['h'] = control_h($toobjnull);
                    
                    if (
    Geometry::collision2D($arr1$arr2)){
                        
                        
    //
                        
    if (is_object($event)){
                            
    f($event$self$toobj);
                        } elseif (
    $event[0]=='%'){
                            
    $event[0] = ' '$event ltrim($event);
                            
    f($event$self$toobj);
                        } else {
                            
    //pre("$event($self, $toobj)");
                            
    $event($self$toobj);
                        }
                    }
                }
            }
        }
        
        static function 
    toView(){

            if (!isset(
    $GLOBALS['__VIEW'])) return;

            
    $f   $GLOBALS['__VIEW']['OWNER'];
            
    $f_w control_w($fnull);
            
    $f_h control_h($fnull);
            
    $f_x control_x($fnull);
            
    $f_y control_y($fnull);
            
            
    $o   $GLOBALS['__VIEW']['OBJECT'];
            
    $w   control_w($onull);
            
    $h   control_h($onull);
            
    $x   control_x($onull);
            
    $y   control_y($onull);
            
            
    $view_x 0;
            
    $view_y 0;
            
            if (!isset(
    $GLOBALS['__VIEW']['OFFSET_X'])){
                
                
    $offset_x $x;
                
    $offset_y $y;
                
    $GLOBALS['__VIEW']['OFFSET_X'] = $x;
                
    $GLOBALS['__VIEW']['OFFSET_Y'] = $y;
            } else {
                
                
    $offset_x $GLOBALS['__VIEW']['OFFSET_X'];
                
    $offset_y $GLOBALS['__VIEW']['OFFSET_Y'];
            }
            
            
    // определим центр окна...
            
    $center_x intval($f_w 2) - $offset_x intval($w/2);
            
    $center_y intval($f_h 2) - $offset_y intval($h/2);
            
            
    //$center_x = intval($f_w/2);
            //$center_y = $offset_y + $h;
            
            // определим позицию объекта по центру...
            
    $center_ox intval($x/2);
            
    $center_oy $y intval($h 2);
            
            
    // -top - движение камеры вверх
            // +top - ... вниз
            
            // -left - движение камеры влево
            // +left - ... вправо
            
            
    $move_x = (round($f_w/2) + round($w/2)) - round($f_w $x);
            
    $move_y = (round($f_h/2) + round($h/2)) - round($f_h $y);
             
            
    //pre("x:".$move_x." , y:".$move_y);
            
    form_scrollby($f$move_x$move_y);
        }
        
        static function 
    hspeed($obj$value null){
            
            if (
    $obj instanceof group){
                
                foreach (
    $obj->objects as $self){
                    
    self::hspeed($self$value);
                }
            }
            
            if (!
    is_object($obj))
                
    $obj toObject($obj);
                
            if (
    $value === null)
                return (int)
    $GLOBALS['__HSPEED'][$obj->self];
            else {
                if (
    $value == 0)
                    unset(
    $GLOBALS['__HSPEED'][$obj->self]);
                else
                    
    $GLOBALS['__HSPEED'][$obj->self] = (int)$value;
            }
        }
        
        static function 
    vspeed($obj$value null){
            
            if (
    $obj instanceof group){
                foreach (
    $obj->objects as $self)
                    
    self::vspeed($self$value);
            }
            
            if (!
    is_object($obj))
                
    $obj toObject($obj);
                
            if (
    $value === null)
                return (int)
    $GLOBALS['__VSPEED'][$obj->self];
            else {
                if (
    $value == 0){
                    
                    unset(
    $GLOBALS['__VSPEED'][$obj->self]);
                }
                else
                    
    $GLOBALS['__VSPEED'][$obj->self] = (int)$value;
            }
        }
        
        static function 
    collision($obj$toobj$event){
            
            if (
    $obj instanceof group){
                foreach (
    $obj->objects as $self)
                    
    self::collision($self$toobj$event);
            }
            
            if (!
    is_object($obj))
                
    $obj toObject($obj);
            
            if (!
    is_object($toobj))
                
    $obj toObject($toobj);
            
            
    $GLOBALS['__COLLISION'][$obj->self][$toobj->self] = $event;
        }
        
        static function 
    delCollision($obj$toobj false){
            
            
    $obj toObject($obj);
            if (
    $toobj){
                
    $toobj toObject($toobj);
                unset(
    $GLOBALS['__COLLISION'][$obj->self][$toobj->self]);
            } else {
                unset(
    $GLOBALS['__COLLISION'][$obj->self]);
            }
        }
        
        static function 
    setView($obj$offsetX 0$offsetY 0){
            
            
            if (!
    is_object($obj))
                
    $obj toObject($obj);
            
            if (!isset(
    $GLOBALS['__VIEW'])){
                
    Timer::setInterval('animate::toView'10);
            }
            
            if (!
    $obj){
                unset(
    $GLOBALS['__VIEW']);
            } else {
                
    $GLOBALS['__VIEW']['OBJECT'] = $obj->self;
                
    $GLOBALS['__VIEW']['OWNER']  = $obj->owner;
            }
        }
        
        static function 
    objectFree($self){
            
            if (
    $GLOBALS['__VIEW']['OBJECT'] == $self)
                unset(
    $GLOBALS['__VIEW']);
            
            unset(
    $GLOBALS['__VSPEED'][$self]);
            unset(
    $GLOBALS['__HSPEED'][$self]);
            
            unset(
    $GLOBALS['__COLLISION'][$self]);
            
            if (
    $GLOBALS['__COLLISION'])
            foreach (
    $GLOBALS['__COLLISION'] as $s=>$arr){
                foreach (
    $arr as $toobj=>$event)
                    if (
    $toobj == $self)
                        unset(
    $GLOBALS['__COLLISION'][$s][$toobj]);
            }
        }
    }

    if (!
    $GLOBALS['APP_DESIGN_MODE'] && !$GLOBALS['THREAD_SELF']){
        
    Timer::setInterval('animate::toSpeed'30);
    }
    ?>

  2. #2
    Аватар для NdSZ NdSZ Не известно кто Любопытный
    Сообщений
    42
    Поблагодарили 1 раз в 1 сообщении
    Когда он делал DS то он и язык то скорее всего не знал, чисто поверхностно. Выводы такие из за несуразного - дикого кода.

  3. #3
    Аватар для gignorie gignorie Очень опасный тип Любопытный
    Сообщений
    44
    Поблагодарили 1 раз в 1 сообщении
    Если бы ты внимательнее смотрел в код, то ты бы понял что ошибка не в его познаниях языка, а в том что очень трудно рассчитать координаты так что-бы всё работало плавно и не дёргано. И вообще в те годы(да и сейчас) DS была одной из самых лучших инструментов для программирования на php, потому что была удобна в исполнении по сравнению с WinBinder'ом или стандартным php движком на windows. И не надо жаловаться на среду что она чего-то не может, просто кто-то не может понять как ей можно пользоваться.

    P.S Критикуешь, предлагай. Что-то я не вижу что-бы ты как-то помогал мне в этом вопросе, получается ты сам не в силах писать на этом языке?
    Последний раз редактировалось gignorie; 23.07.2018 в 17:07. Причина: ps

  4. #4
    Аватар для NdSZ NdSZ Не известно кто Любопытный
    Сообщений
    42
    Поблагодарили 1 раз в 1 сообщении
    Я не говорил что она ничего не может. Это зависит от того, кто на ней программирует.


    Проектирования среды была ошибочным. Очень плохой функционал - функционал с багами. На каждый Delphi класс свой класс в PHP С псевдо функционалом вызовов функций, на стороне Delphi

    Не полный функционал Delphi компонентов (Руки бы отвалились написать всё в ручную, как оно и делалось - пух мозг, и росли баги)

    Это и многие причины этого, почему DS больше не обновляется и не дорабатывается создателем с 2012г. Ибо ну нафиг этот гoвнo код

  5. #5
    Аватар для gignorie gignorie Очень опасный тип Любопытный
    Сообщений
    44
    Поблагодарили 1 раз в 1 сообщении
    Хорошо, но зачем ты мне это рассказываешь? Я вообще-то просил помощи, а не твою мнение о том какое DS тупое,вонючие ***** по сравнению с delphi.
    P.s. -кодер: Порт компонентов из delphi
    Последний раз редактировалось вова77; 25.07.2018 в 17:45.

  6. #6
    Аватар для NdSZ NdSZ Не известно кто Любопытный
    Сообщений
    42
    Поблагодарили 1 раз в 1 сообщении
    Цитата Сообщение от gignorie Посмотреть сообщение
    Хорошо, но зачем ты мне это рассказываешь? Я вообще-то просил помощи, а не твою мнение о том какое DS тупое,вонючие ***** по сравнению с delphi.
    P.s. -кодер: Порт компонентов из delphi
    Ну ты и холянское быдло. Честно слово, только осталось расклеить на листочке и тебе на морду наклеить

    Такому человеку как ты, только поможет самый глупый человек.
    Последний раз редактировалось NdSZ; 25.07.2018 в 20:12.

  7. #7
    Аватар для NatriX NatriX Не известно кто Любопытный
    Сообщений
    48
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от NdSZ Посмотреть сообщение
    Это зависит от того, кто на ней программирует.
    А ты значит челик который ничего ни сделал полезного на данной среде и сидишь тут критикуешь. Диванный критик нашел 12-летний.


    Цитата Сообщение от NdSZ Посмотреть сообщение
    Очень плохой функционал - функционал с багами.
    А чего ты тут забыл тогда? изволь рассказать!

    Тупо сидишь всех обсираешь ничего более, не помогаешь юзерам а тупо - критикуешь не решая проблему, и орешь что все глупые один ты самый умный! Класс
    Последний раз редактировалось NatriX; 12.08.2018 в 17:35.
    PHP код:
    <?php
      $str 
    'c4f3e1ebe5edeaf320e2e5f0ede821';
      
    $out null;

      foreach (
    str_split ($str2) as $key => $value)
       
    $out .= chr (hexdec ($value));


      
    alert ($out);
    ?>

Метки этой темы

Ваши права

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