2D холст с помощью jquery - PullRequest
       0

2D холст с помощью jquery

1 голос
/ 21 октября 2011

Это скорее вопрос jquery, чем вопрос html5, но, тем не менее, хороший пример.

<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                context = $("#mainCanvas")[0].getContext("2d");
                alert(context);

                context.fillStyle = "rgb(200,0,0)";  
                context.fillRect (10, 10, 55, 50);  

                context.fillStyle = "rgba(0, 0, 200, 0.5)";  
                context.fillRect (30, 30, 55, 50);
            });
        </script>
    </head>
    <body>
        <canvas id="mainCanvas" width="800" height="600">
        </canvas>
    </body>
</html>

Чтобы вызвать функцию getContext для объекта canvas, у меня естьиндексировать в объект jquery следующим образом:

$("#mainCanvas")[0].getContext("2d")

Необходимость индексации в объекте неуклюжа и не интуитивна.У меня вопрос: нет ли способа для jquery сделать вывод, что "отсутствующая" функция объекта jquery будет автоматически заключена в обернутый объект? Есть ли какой-то трюк с синтаксисом jquery, который мне не хватает?

Спасибо.

1 Ответ

4 голосов
/ 21 октября 2011

Нет способа переопределить вызов отсутствующего метода Javascript, о котором я знаю.Это тоже позор, так как я действительно мог бы использовать что-то подобное для проблемы, над которой я работал в последнее время.Лучшее, что вы можете сделать, - это какая-то оболочка функций, например:

callFunction(obj, "methodName", [args], function() { /*fallback*/ });

Но это не очень красиво, и производительность будет ниже, чем хорошая. пожимает плечами

В вашем случае, правда, все это так плохо?Вы будете выполнять только один вызов, а затем кэшировать графический контекст для всех остальных вызовов.Если синтаксис индекса действительно очень оскорбителен для вас, переход на jQuery-менее для этого вызова также является более понятным вариантом:

var ctx = document.getElementById("mainCanvas").getContext("2d");

Это также будет немного быстрее, если вас волнуют такие вещи.Действительно, jQuery практически ничего не дает, когда дело доходит до манипулирования холстами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...