jsxgraph указывает в iFrame, зависает при увеличении / уменьшении - PullRequest
0 голосов
/ 25 октября 2019

У меня есть задача, где jsxgraph добавляется через iFrame. мы добавляем точки на клик / клик по доске jsxgraph. Проблема в том, что когда мы увеличиваем или уменьшаем масштаб iPad, очки замирают. Эта задача имеет переменную InitialArcadixNoofVertices, которая устанавливает максимальное количество точек. ResultArcadixCoords записывает X и Y позиции каждой точки.

мы добавили JSX.touchProperty, увы, он не работает. Смотри пункт А ниже. введите описание изображения здесь

JXG.Options.ticks.useUnicodeMinus = false;
JXG.Options.axis.ticks.strokeColor = 'white';
JXG.Options.axis.ticks.strokeOpacity = 0;
JXG.Options.point.showInfobox = false;
var icol = 0;
var col = [247, 70, 287, 35, 360, 100, 200, 20, 300, 50, 315, 30, 225, 95, 330, 65, 269];
var A = 3;
var InitialArcadixNoofVertices  = "";
function main(){
board = JXG.JSXGraph.initBoard('box', { boundingbox: [-1, 11, 11, -1],
zoom : {
        factorX : 0,
        factorY : 0,
        wheel : false,
        needshift : false,
        eps : 0.0
    },
    pan: {enabled: false},
    showCopyright:false,axis: true, grid: true, showNavigation:false });
    board.attr.pan.enabled = false;
    board.attr.pan.needtwofingers = false;
    board.registerevents = false;
if (InitialArcadixNoofVertices !== null && InitialArcadixNoofVertices !== undefined && InitialArcadixNoofVertices !== "") {
    A = parseInt(InitialArcadixNoofVertices);
}
var arrCollection = []; 
var points = [];
var getMouseCoords = function (e, i) {
    var cPos = board.getCoordsTopLeftCorner(e, i),
        absPos = JXG.getPosition(e, i),
        dx = absPos[0] - cPos[0],
        dy = absPos[1] - cPos[1];

    return new JXG.Coords(JXG.COORDS_BY_SCREEN, [dx, dy], board);
},
    down = function (e) {
        var canCreate = true, i, coords, el;
        if (e[JXG.touchProperty]) {i = 0}
        coords = getMouseCoords(e, i);
        if (canCreate) {
            var strCoOrdinates = coords.usrCoords[1] + "," + coords.usrCoords[2]
            if (arrCollection.length < A) {
                arrCollection.push(strCoOrdinates);
                points.push(board.create('point', [coords.usrCoords[1], coords.usrCoords[2]], { snapToGrid: true, color: JXG.hsv2rgb(col[icol],1,1) }));
                icol++;
            }
            if (arrCollection.length == A) {
                var poly = board.create('polygon', points, {withLines: false,  fillColor:'transparent' });
                var ds= [];
                for(var k=0; k <A; k++){
                    ds.push(poly.vertices[k].X());
                    ds.push(poly.vertices[k].Y());
                }
                ResultArcadixCoords = ds;
            }
        }
    }
board.on('up', down);

    board.update(); 
}
function resetTask() {
JXG.JSXGraph.freeBoard(board);
main();
}
main();
...