Пример #1
0
        //박스가 날아다니기 시작할 것이다.
        public static void startmoving(Namyong namyong, ILwin.MainWindow thisWin)
        {
            int namyongLoc_x = 0;
            namyong.status = 0;


            while (true)
            {
                //현재 margin left 값을 가져온다
                thisWin.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
                {
                    namyongLoc_x = (int)namyong.namyongRec.Margin.Left;
                }));

                Thread.Sleep(namyong.speedTerm);

                namyong.status = (namyong.status == 1) ? 0 : 1;

                thisWin.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
                {
                    namyong.namyongRec.Fill = namyong.namyongBr[(2*namyong.dir) + namyong.status];
                }));

                if (namyong.dir == LEFT)
                {
                    //왼쪽 벽에 다다르면
                    if (namyongLoc_x <= 0)
                    {
                        //방향은 오른쪽으로 바뀌고, 그림도 바뀌어야지.
                        namyong.dir = RIGHT;

                        //말풍선도 오른쪽으로 바뀌고, 말풍선 위치도 바뀐다.
                        thisWin.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
                        {
                            namyong.balloon.rec.Background = namyong.balloon.ballBr[RIGHT];
                            namyong.balloon.rec.Margin = new Thickness(namyong.namyongRec.Margin.Left - Constants.NAMYONG_BALLOON_RIGHT_DIST, namyong.namyongRec.Margin.Top, 0, 0);
                        }));
                    }

                    //그렇지 않다면 계속 왼쪽으로 이동
                    else
                    {

                        thisWin.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
                        {
                            namyong.namyongRec.Margin = new Thickness(namyong.namyongRec.Margin.Left - 2, namyong.namyongRec.Margin.Top,
                                namyong.namyongRec.Margin.Right, namyong.namyongRec.Margin.Bottom);

                            namyong.balloon.rec.Margin = new Thickness(namyong.balloon.rec.Margin.Left - 2, namyong.namyongRec.Margin.Top,
                                0, 0);
                        }));
                    }
                }



                else if (namyong.dir == RIGHT)
                {
                    //왼쪽 벽에 다다르면
                    if (namyongLoc_x >= 640)
                    {
                        namyong.dir = LEFT;

                        //말풍선도 왼쪽으로 바뀌고, 말풍선 위치도 바뀐다.
                        thisWin.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
                        {
                            namyong.balloon.rec.Background = namyong.balloon.ballBr[LEFT];
                            namyong.balloon.rec.Margin = new Thickness(namyong.namyongRec.Margin.Left + Constants.NAMYONG_BALLOON_LEFT_DIST, namyong.namyongRec.Margin.Top, 0, 0);
                        }));
                    }

                    //그렇지 않다면 계속 왼쪽으로 이동
                    else
                    {

                        thisWin.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
                        {
                            namyong.namyongRec.Margin = new Thickness(namyong.namyongRec.Margin.Left + 2, namyong.namyongRec.Margin.Top,
                                namyong.namyongRec.Margin.Right, namyong.namyongRec.Margin.Bottom);

                            namyong.balloon.rec.Margin = new Thickness(namyong.balloon.rec.Margin.Left + 2, namyong.namyongRec.Margin.Top,
                                0, 0);

                        }));
                    }
                }


            }


        }
Пример #2
0
        //sayKeyword에서 실행되는 스레드.
        public static void sayKeywordThr(Namyong namyong, Balloon balloon)
        {
            //가져올 검색어들. 2개 정도만 가져온다.
            List<string> keywords = new List<string>();

            Thread thrkeyword = new Thread(() => HTMLhandler.getHotKeyword(Constants.IS_NAMYONG, keywords));
            thrkeyword.Start();

            //기다리자
            thrkeyword.Join();

            namyong.isGettingKeyword = false;

            Balloon.setMSGsub(namyong.screen.getMWinReference(), balloon, "아까 전까지 뜨고 있던 키워드는 '" + keywords.ElementAt(0) + "', '" + keywords.ElementAt(1) + "' 라고 합니다.");
        }
Пример #3
0
        //위 sayaboutCom에서 작동할 스레드
        public static void sayaboutComThread(ShowScreen screen, Namyong namyong)
        {
            //WMIhandler에 있는 RAM 계산 함수를 작동시켜서 정보를 얻고, 그 스레드를 기다리자
            Thread thrRAMWMI = new Thread(() => WMIhandler.initialRAMdata(screen.getMWinReference().getDatasReference()));
            thrRAMWMI.Start();

            thrRAMWMI.Join();
            screen.getMWinReference().Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
            {
                namyong.balloon.setMSG("현재 사용가능한 RAM 용량은 " + screen.getMWinReference().getDatasReference().getUsableRAM() + "에요.");
                namyong.isComputingRAM = false;
            }));
        }
Пример #4
0
        //박스가 날아다니기 시작할 것이다.
        public static void startjumping(Namyong namyong, ILwin.MainWindow thisWin)
        {
            //점프를 수행한다.

            int jumpY;

            for (jumpY = 0; jumpY < 50; jumpY++)
            {
                thisWin.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
                {
                    namyong.namyongRec.Margin = new Thickness(namyong.namyongRec.Margin.Left, (namyong.ypos - jumpY * 3), 0, 0);
                }));

                Thread.Sleep(5);
            }

            Thread.Sleep(600);

            for (; jumpY > 0; jumpY--)
            {
                thisWin.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
                {
                    namyong.namyongRec.Margin = new Thickness(namyong.namyongRec.Margin.Left, (namyong.ypos - jumpY * 3), 0, 0);
                }));

                Thread.Sleep(5);
            }


            //점프가 끝났음을 알린다.
            namyong.isJumping = false;

        }